1

私は FileMaker 12 でデータベースを構築しています。このデータベースには、とりわけ、ジョブのリスト (数値 ID で示されます) とそのジョブに対して請求可能な時間を保持する従業員が含まれます。

与えられた 3 つのテーブル:

Employee ( empName, empID, salary, ... )
JobHours ( empID, jobID, hrsWorked, ... , refID)
JobCost  ( jobID, expenses, profit, ... , refID)

どこ:

Employee は、数値の従業員 ID と統計 (給与など) に名前を一致させる私の人事名簿です。

JobHours は、従業員の参加のリストです。従業員が仕事に時間を費やすたびに、このテーブルには ID、ジョブ ID、勤務時間、およびその他の情報が表示される行があります。

JobCost は、ジョブの日次記録です。このテーブルの 1 つのエントリは、1 日の 1 つのジョブのアクティビティを参照します。さらに、各エントリはシステムによって生成された一意の ID (jobID も日付も一意ではないため) を取得し、JobHours に関連付けます (特定の日に特定の仕事に従事した人のリストが生成されます)。

JobCost のレコードを表示するフォームがあります。各レコードについて、その日にその仕事に取り組んだ JobHours のレコードをポータルで確認できます。

さて本題。

私のポータルでは、従業員名のドロップダウン リストを値リストから取得して、次の条件で JobHours にレコードを作成したいと考えています。

1)キーボードからの自動入力に応答するように、ポップアップではなくドロップダウンにする必要があります。ドロップダウンでは、ドロップダウン中に値リストから 2 番目の値 (従業員名) が表示され、2 番目の値のキーボード オートコンプリートに適切に応答しますが、選択を行うと、1 番目の値 (従業員名) のみが表示されます。 ID)。

2) ID ではなく名前を常に表示する必要があります。ポップアップはこれを完全に行います。ただし、オートコンプリートを入力するためのキーボードには反応しないようです。

3) 名前ではなく数値 ID を保存する必要があります。

これらの基準のいずれか 2 つを同時に満たす方法は知っていますが、それだけです。それ以外の場合、データベース全体が美しく機能しています。この動作は可能ですか?

4

3 に答える 3

2

一般的な手法の 1 つは、2 つのフィールドを直接重ねて使用することです。

一番下に、JobHours::EmpID フィールドを配置します。指定した値リストを含むドロップダウン リストとして設定します。

JobHours::EmpID フィールドの上に、関連する Employee::EmpName フィールドを配置します。参照モードまたは検索モードで入力できないようにフィールドを設定します。

これで、ユーザーには従業員名が表示されますが、クリックすると上部のフィールドを通過して従業員 ID フィールドに入り、そこで値リストから名前を選択します。

于 2013-07-20T02:08:11.417 に答える
0

pft のソリューションは私が長い間使用してきたものですが、ユーザーが値を変更するときにフィールドに既存の ID 番号が表示されるため、まだ洗練されていないと思います。

先行入力が重要な場合は、ポップアップ メニューを使用します。タブでメニューに移動するか、メニューをクリックしてメニューをアクティブにすると、ユーザーはキーボードから入力できるようになり、入力内容に基づいて選択が変更されます。

于 2013-07-21T06:05:06.250 に答える
0

私はこの同じ問題の解決策を探してこのスレッドに来ました (ユーザーがリストから選択し、選択を表示できるようにしますが、代わりに関連する値を保存します)。たとえば、ドロップダウンから植物種名を選択し、ドロップダウン フィールドに植物種名を表示しますが、分類学的シリアル番号 (TSN; これは長年にわたって同じままである可​​能性が高い) を保存します。これは MS Access では簡単に実行できますが、FMP12 で実行するにはもう少し手間がかかりました。

解決方法: 値を格納するテーブルに、Plant_TSN と Plant_SciName の 2 つのフィールドを作成しました。これら 2 つのフィールドの値の間に関係が存在する必要があります。私の場合、各 TSN の SciName をルックアップ テーブルに格納します。次に、新しいフィールドごとに 1 つずつ、レイアウトに 2 つのフィールドを作成しました。

保存したい値 (例: Plant_TSN): 対応するレイアウト フィールドをドロップダウンにし、表示/非表示の矢印を含めます。ドロップダウンに入力する値リストを編集して、2 番目の (読みやすい) 列を表示しますが、最初の列の値を保存します。レイアウトで、フィールドを縮小して矢印のみ​​を表示します。

ユーザーに表示させたいフィールド (例: Plant_SciName): 他のレイアウト フィールドを編集ボックスにして、参照モードまたは検索モードでのフィールド入力を防止します。ただし、前の手順で作成したドロップダウン矢印とは対照的に、1 つのフィールドのように見えます。

最後に、最初のフィールド (矢印のみのドロップダウン) に戻り、ドロップダウンで使いにくい (Plant_TSN) 値が選択されたときに、使いやすい番号 (Plant_SciName) を編集ボックスにプッシュするスクリプトを記述します。ドロップダウン形式のフィールドの OnObjectSave スクリプト トリガーを使用しました。スクリプトは、1) ウィンドウをフリーズする、2) 関連レコードに移動する (ルックアップ テーブルの関係に基づく)、3) フィールドを設定する (つまり、編集ボックス)、4) GotoLayout[オリジナル] に沿って Freeze をオフセットする必要があります。

おそらく完全に明確な説明ではありませんが、3 回目までに理解できると思います。スクリーンショットを投稿したかったのですが、「評判ポイント」が10ポイント必要なようです。

乾杯。

于 2014-07-22T20:39:01.560 に答える