- ベストアンサー
DLookupがうまく出来ません
アクセス2000を使ってます。 顧客台帳のフォームにCAコードのテーブルから「担当者」「リスト順」のデータを顧客台帳の営業部員コードのフィールドに営業部員コードNOを入力したら自動的に入力されるようにしたいのですがうまく出来ません。 担当者=DLookup("担当者","CAコード","営業部員コード="&営業部員コード) リスト順=DLookup("担当者","CAコード","営業部員コード="&営業部員コード) で設定しましたが自動入力されません。 ちなみに担当者・営業部員コード等はテキスト型ですが、営業部員コードにマウスを移動した時にはEmpty値って出ます。 どのようにしたら良いのでしょうか? 私は、アクセスは全くの初心者ですので詳しく説明していただけると助かります。 宜しくお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
再度、nekです。 VBエディターのイミディエイトウインドウを開いて ?DLookup("担当者", "CAコード", "営業部員コード = '@@@@'") って書き込み実行(enter)してみてください。 注:@@@@は実際に存在している営業部員コードを直接記入する。 上記の状態で、担当者が表示されない限り プログラムを走らせても無理です。 まず、一番デバッグしやすいイミディエイトウィンドウで色々確認してみてください カンマやダブルコーテーション等は全角になっていませんか? 構文エラー;演算子がありません・・・というのは 文法が間違っていますので色々試してみるしかありません。 「営業部員コード」を主キーにしてる事は問題ありません。
その他の回答 (4)
- nek
- ベストアンサー率34% (46/135)
第一回答のnekです。 実際の動作を見てないので なかなか対応するのは、難しいですが こういう場合は、まず原因を特定してください。 一度に動作させようとするので、原因がわからなくなるわけです。 今回の場合は、ifの使い方、Dlookupの使い方、営業部員コードの値が代入されてない という3つが考えれます。 まず、ifを一時的に辞めて実行してみてください 担当者 = DLookup("担当者", "CAコード", "営業部員コード='" & 営業部員コード & "'") もし、これでもエラーが出る場合、 営業部品コード値が代入されているかを確かめる為に ※営業部員コードにマウスを移動した時にはEmpty値が出るという事はこれが一番怪しい 担当者 = DLookup("担当者", "CAコード", "営業部員コード = '@@@@'")) 注:@@@@は実際に存在している営業部員コードを直接記入する。 と変更して実行してみましょう。 これでも駄目なら、Dlookupに原因があると思います。 文法は問題なさそうなので、CAコードというテーブルに「担当者」「営業部員コード」が存在するか、誤字脱字が無いか確認してみましょう。 あとは、&の前後に空白が入ってるかとか?(違うエラーが出そうだけど) こんな感じで原因を把握して、対応してみては?
補足
アドバイス有難うございます。 3パターンの方法をしてみましたがやっぱりエラーが出ます。 1つ疑問に思ったのが、CAコードテーブルには「担当者」と「営業部員コード」は 存在するし、スペル等も間違ってませんが、「営業部員コード」を主キーにしてる のですがこれが何か原因なのでしょうか? ご迷惑お掛けしますが宜しくお願いします。
- maruru01
- ベストアンサー率51% (1179/2272)
再びmaruru01です。 そのIf~も込みで、 担当者 = IIf(IsNull(Me!営業部員コード),"",DLookup("担当者", "CAコード", "営業部員コード = '" & Me![営業部員コード] & "'")) ならどうですか。 では。
お礼
こんにちは、maruru01さん。 ごちゃごちゃになってたみたいで、今朝から始めからmaruru01さんので設定しなおしました。そうしたら無事出来るようになりました。 本当に有難うございました。 で、もう1つ質問ですが、同じフォームで住所コードってあるですが、同じ様にしたい場合は、同じ設定でコード名等を変えるだけで良いのでしょうか?
補足
度々お返事有難うございます。 実行時エラー クエリ式'営業部員コード=’の構文エラー;演算子がありません って出てきます。 デバックで担当者=~の担当者の所は相変わらずNull値ってマウスを近づけたら出ますが・・・ ご迷惑お掛けしますが宜しくお願い致します。
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 >顧客台帳の営業部員コードのフィールドに営業部員コードNOを入力したら とありますが、顧客台帳というフォームにある[営業部員コード]というテキストボックスに値を入力したらということですよね。 そういう仮定で、 担当者 = DLookup("担当者", "CAコード", "営業部員コード = '" & Me![営業部員コード] & "'") でどうですか。 では。
補足
アドバイス有難うございます。 教えていただいたように入力してみたら、演算子が見つかりませんってエラーメッセージが出ました。 1つ疑問に思ったんですが、担当者=DLookup~の担当者にマウスを近づけた時にNull値って出たのですが、担当者=Dlookup~の前に If Not IsNull(営業部員コード)Thenって式を入れてるのですがそれが原因なのでしょうか? 宜しくお願い致します。
- nek
- ベストアンサー率34% (46/135)
担当者=DLookup("担当者","CAコード","営業部員コード='" & 営業部員コード & "'") でいけると思います。 テキスト型の場合は前後を ' で挟む必要があります。
お礼
有難うございました。 教えていただいたとおりに入力してみて、フォームに営業部員NOを入れてみたのですが、実行時のエラーでクエリ式営業部員コード="'"の構文エラー演算子がありませんって出てしまいました。 これって、担当者=の前に If Not IsNull(営業部員コード)Then と入れたのですがこれが原因でしょうか? Empty値ってなってるのが原因でしょうか? お手数かけますが宜しくお願いします。
補足
教えていただいたとおりに入力してみて、フォームに営業部員NOを入れてみたのですが、実行時のエラーでクエリ式営業部員コード="'"の構文エラー演算子がありませんって出てしまいました。 これって、担当者=の前に If Not IsNull(営業部員コード)Then と入れたのですがこれが原因でしょうか? Empty値ってなってるのが原因でしょうか? お手数かけますが宜しくお願いします。
補足
おはようございます。 教えていただいた方法で 担当者=DLookup("担当者", "CAコード", "営業部員コード = '320'") を入れてみたら320のデータは出ました。 って事は文法は間違ってないって事ですよね? 宜しくお願い致します。