1

私は2つのテーブルを持っています:

Employees:
uid (number) | first_name (string) | last_name (string) | ...

Projects:
uid | project_title (string) | point_of_contact_id (FK: Employees.uid) | ...

「連絡先」コンボボックス(ドロップダウン)フィールドを備えたプロジェクトのフォームを作成したいと思います。表示値は「first_namelast_name」である必要がありますが、バッキングデータはUIDです。あるものをユーザーに表示し、別のものをテーブルに保存するようにフォームを設定するにはどうすればよいですか?

フルネームフィールドでビューを作成できるので、1つのフィールド(たとえば「first_name」だけ)しか表示できなくても問題ありません。

後で:

テーブルデザインレベルでこれを行う方法がある場合は、UIDフィールドごとに1つの設定を設定するのではなく、UID列ごとに設定を設定するだけで済みます(テーブルが多数あります)。多くフォームがあり、それぞれにいくつかのUIDフィールドがあります)。

4

2 に答える 2

3

ドロップダウンボックスの行ソースを「selectuid、first_name、lastname from tablename」に設定し、columnwidthを0に設定します。これにより、最初の列の幅がゼロに設定されるため、ユーザーには表示されません(指定できます)。セミコロンで区切る他の列の幅、つまり:0cm; 4cm; 4cm)

于 2008-09-30T13:40:31.130 に答える
3

Loesje の回答を拡張するには、複数のフィールドを表示するときに Bound Column プロパティを Column Count および Column Widths と共に使用して、どのフィールドをデータベースに書き込む必要があるかを Access に伝えることができるようにします。(VBA を使用してこれを行う方法は他にもありますが、これは特定のケースで機能するはずです。)

あなたの場合、Row Source を に設定select uid, first_name, last_name from tablenameすることは、Row Source (uid) の最初の列に対して、バインドされた列が 1 であることを意味します。これはデフォルト値であるため、別のフィールドの値を保存する場合にのみ変更する必要があります。(たとえば、上記の行ソースから last_name を保存する場合は、バインドされた列を 3 に設定します。)

表示している他の列の幅を設定するときは、コンボ ボックスの Width プロパティを列幅の合計以上にする必要があることを忘れないでください。そうしないと、すべての列が表示されない場合があります。

そのテーブルに基づくフォームが特定の列をプルする必要があること、または特定の列が外部キーであることをテーブル レベルで示す方法はありませんが、コンボ ボックスを他のフォームにコピーすることはできます。それとそのプロパティ。行ソース クエリをコピーして、他のコンボ ボックスに貼り付けることもできます。

于 2008-09-30T15:49:57.760 に答える