- ベストアンサー
AccessのフォームのテキストボックスにLOOKUPで表示したい
かなり初心者です。 Accessに【顧客テーブル】と【担当者テーブル】を作成しました、それぞれに【担当者コード】というフィールドを作っています。この【顧客テーブル】に顧客情報をフォームで入力していきたいのですが、顧客テーブルの【担当者コード】フィールドに担当者コードを入力した際、【担当者テーブル】の担当者名がExcelのLOOKUPと同じように表示できると思ってやりましたがうまくいきません。 テキストボックスのコントロールソースに =VLOOKUP([担当者コード](フォームのテキストボックスの名前),[T_担当者テーブル],[T_担当者テーブル]![社員名])・・・と入れたら、#Name?エラーが出ます。 Lookupは使えませんか?他に方法ありますか? よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
<通常のやり方> ・[担当者コード]をコンボボックスにする。 ・[値集合ソース]=SELECT 担当者.ID, 担当者.担当者名, * FROM 担当者; ・[列幅]=0cm;3cm ・[リスト行数]=担当者総数 これで、担当者名を選ぶと[担当者.ID]が入力・変更できます。 [担当者.ID]は、[担当者.担当者コード]と質問者の使用列名に直して下さい。 なお、 [担当者名表示欄]=Lookup("担当者名", "担当者テーブル”, "担当者コード=" & [担当者コード]) では、入力コードテーブルをユーザーに示さねばならないので問題が多いと思います。
その他の回答 (4)
- O_cyan
- ベストアンサー率59% (745/1260)
>Lookupは使えませんか VLookupはExcelのデータシート関数なので使えません。DLoookupで出来ます。 担当者コードのコントロールソースに = DLookup("[担当者名]", "担当者テーブル", "[担当者コード] = " & Me![担当者コード]) または = DLookup("[担当者名]", "担当者テーブル", "[担当者コード] = " & Forms!フォーム名!担当者コード) でできます。 >他に方法ありますか 簡単な方法はフォームをデザインビューで開きフォーム自体のプロパティを開きます。 レコードソースに顧客テーブルが設定されていると思います。その右の...ボタンをクリックしクエリビルダを起動しSQLステートメントを開きます。担当者テーブルをテーブルの表示でステートメント内に追加します。顧客テーブルの担当者コードと担当者テーブルの担当者コードをドラッグし結合させます。(先にリレーションをしていれば自動で結合は表示されます。) SQLステートメントに顧客テーブル全て(フォームのコントロールに必要なフィールドのみでOK)と担当者テーブルの担当者名のフィールドを追加し閉じます。 フォームの担当者名のコントロールソースを担当者テーブルの担当者名に設定すれば担当者コードの入力によって担当者名が表示されます。(これも簡単です) 別の方法として 担当者コードをコンボボックスにして担当者テーブルの担当者コード・担当者名を表示させ選択したものを担当者コードに取得し担当者名を表示したいコントロールに担当者名を代入させるやりかた。 コンボボックスが担当者コード・担当者名の順で表示するようにしてあるとして イベントの更新後処理に Private Sub コンボボックス名_AfterUpdate() 担当者名 = コンボボックス名.Column(1) End Sub とすればフォームの担当者名を表示するコントロールにコンボボックスの担当者名の値を代入することができます。
- sanbit
- ベストアンサー率32% (16/50)
顧客情報入力フォームの担当者コード入力のテキストボックスのプロパティ→イベントタブ→更新後処理に Me![担当者名] = DLookup("担当者名", "担当者テーブル", "担当者名コード='" & Me![担当者コード] & "'") これで担当者テーブルの担当者コードとフォームの担当者コードをKeyにして担当者名をフォームに表示します。 ご質問の趣旨と違ってましたらごめんなさい。
s_husky です DLookup の D が欠落していました。
- amado
- ベストアンサー率50% (2/4)
DLookup("担当者名", "顧客テーブル", "担当者コード = me.フォームのテキストボックスの名前") ↑で出来ないでしょうか。最後のテキストボックスの 名前は、条件をダブルクォーテーション囲む必要が あるので、変数に一度入れて&で文字結合してダブル クォーテーションの外に出さないといけません。