2009-06-01 16 views
1

フォームの "レコードソース"テーブルに属していないフィールドをデザインビューでバインドするにはどうすればよいですか?

例: "Order.cust_id"(レコードソース= Order)があり、 "Customers.name"を表示したいとします。私はそれが自明だと信じていますが、私はMS Accessに関する経験はありません。私は、テキストボックス "コントロールソース"プロパティを使用しようとしましたが、運はありません。*外部フィールドの値をテキストボックスに表示するにはどうすればよいですか?

答えて

1

あなたはテキストボックスのコントロールソースとしてのDLookup使用することができます。

=DlookUp("[Name]", "Customer", "ID=" & Cust_ID) 

構文:ルックアップするためにどのような、声明

は、if文は、ジェットSQLのルールに従うべきであるテーブル名、フィールドがテキストまたは日付形式の場合は区切り文字を使用する必要があります。

名前は実際には何のためにも非常に悪い名前であることに注意してください。物事が悪化する直前にフィールドの名前を変更することをお勧めします。

エラーを知ることは便利です。

+0

コードをCustomer.id、Customer.name、Orderで更新してください。cust_idキーワード。 VBは私の義務ではないし、いくつかのエラーメッセージが表示されます:) –

+0

いくつかのメモを付けて完了しました。 DlookUpはフォームのためのかなり標準的なもので、MS Helpでその情報を入手します。式ビルダーは、組み込み関数を支援することもできます。 – Fionnuala

+0

それだけです。ありがとう! –

0

新しいビュー(例:OrdersAndCustomerNames)を作成し、フォームに使用するすべての列を選択し、Orderテーブルをレコードソースとして使用する代わりに、OrdersAndCustomerNamesに切り替えるだけです。あなたはMS Accessの経験がないと言うので、あなたは巨大で過度に複雑なことを構築していないと推測しているので、私はこのようにします。もっとエレガントにできると確信していますが、これは今のところできます。

+0

ありがとうございますが、私はより多くの*コントロールが必要です。なぜなら、4から5のテーブルを使用するからです。 –

3

1つの方法は、テキストボックスをコンボボックスに変換することです。次に、顧客テーブルのcust_IdとCustomer.Nameの両方を含むように行ソースを設定します。 SQL文の例

Select Cust_ID, Name From Customer 
Order By Name; 

列の数を2に設定し、列の幅を設定します。最初の列がゼロ(すなわち「0; 6」)である場合、外部キーはユーザから隠され、顧客名が表示される。

注意:この方法では、リストの制限をtrueに設定する必要があります。

また、あなたが望むものではないかもしれないドロップダウンリストで終わります。

+0

私はさまざまなテーブルからフォームフィールドに表示したい、私は1つのテーブルに外国のIDを持っています。私はテキストボックスとコンボを使うつもりです。私はそれを達成するためにVBAを使用する必要がある場合、私は気にしない。 –

+0

OK私は助けてうれしいです。これはテーブルデザインビューで設定できます。フォームを作成すると、デフォルトでコンボボックスになります。しかし、これの欠点は、あなた自身から外部キー値を隠すことです。 – Mark3308

+0

悪いアドバイス、Mark3308 - テーブルデザインのルックアップフィールドは非常に問題が多いため(表示された値をクエリできますが、その背後にある値だけをクエリできますそれ)。コンボボックスはUIオブジェクトであり、テーブルやクエリはデータオブジェクトであり、UIオブジェクトではありません(ただし、UIとして使用することができます)。コンボボックスはフォーム上にあり、どこにもありません。 –

関連する問題