• ベストアンサー

DLookupがうまく出来ません

アクセス2000を使ってます。 顧客台帳のフォームにCAコードのテーブルから「担当者」「リスト順」のデータを顧客台帳の営業部員コードのフィールドに営業部員コードNOを入力したら自動的に入力されるようにしたいのですがうまく出来ません。 担当者=DLookup("担当者","CAコード","営業部員コード="&営業部員コード) リスト順=DLookup("担当者","CAコード","営業部員コード="&営業部員コード) で設定しましたが自動入力されません。 ちなみに担当者・営業部員コード等はテキスト型ですが、営業部員コードにマウスを移動した時にはEmpty値って出ます。 どのようにしたら良いのでしょうか? 私は、アクセスは全くの初心者ですので詳しく説明していただけると助かります。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • nek
  • ベストアンサー率34% (46/135)
回答No.5

再度、nekです。 VBエディターのイミディエイトウインドウを開いて ?DLookup("担当者", "CAコード", "営業部員コード = '@@@@'") って書き込み実行(enter)してみてください。   注:@@@@は実際に存在している営業部員コードを直接記入する。 上記の状態で、担当者が表示されない限り プログラムを走らせても無理です。 まず、一番デバッグしやすいイミディエイトウィンドウで色々確認してみてください カンマやダブルコーテーション等は全角になっていませんか? 構文エラー;演算子がありません・・・というのは 文法が間違っていますので色々試してみるしかありません。 「営業部員コード」を主キーにしてる事は問題ありません。

renault
質問者

補足

おはようございます。 教えていただいた方法で 担当者=DLookup("担当者", "CAコード", "営業部員コード = '320'") を入れてみたら320のデータは出ました。 って事は文法は間違ってないって事ですよね? 宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • nek
  • ベストアンサー率34% (46/135)
回答No.4

第一回答のnekです。 実際の動作を見てないので なかなか対応するのは、難しいですが こういう場合は、まず原因を特定してください。 一度に動作させようとするので、原因がわからなくなるわけです。 今回の場合は、ifの使い方、Dlookupの使い方、営業部員コードの値が代入されてない という3つが考えれます。 まず、ifを一時的に辞めて実行してみてください 担当者 = DLookup("担当者", "CAコード", "営業部員コード='" & 営業部員コード & "'")  もし、これでもエラーが出る場合、 営業部品コード値が代入されているかを確かめる為に  ※営業部員コードにマウスを移動した時にはEmpty値が出るという事はこれが一番怪しい 担当者 = DLookup("担当者", "CAコード", "営業部員コード = '@@@@'"))   注:@@@@は実際に存在している営業部員コードを直接記入する。 と変更して実行してみましょう。 これでも駄目なら、Dlookupに原因があると思います。 文法は問題なさそうなので、CAコードというテーブルに「担当者」「営業部員コード」が存在するか、誤字脱字が無いか確認してみましょう。 あとは、&の前後に空白が入ってるかとか?(違うエラーが出そうだけど) こんな感じで原因を把握して、対応してみては?

renault
質問者

補足

アドバイス有難うございます。 3パターンの方法をしてみましたがやっぱりエラーが出ます。 1つ疑問に思ったのが、CAコードテーブルには「担当者」と「営業部員コード」は 存在するし、スペル等も間違ってませんが、「営業部員コード」を主キーにしてる のですがこれが何か原因なのでしょうか? ご迷惑お掛けしますが宜しくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

再びmaruru01です。 そのIf~も込みで、 担当者 = IIf(IsNull(Me!営業部員コード),"",DLookup("担当者", "CAコード", "営業部員コード = '" & Me![営業部員コード] & "'")) ならどうですか。 では。

renault
質問者

お礼

こんにちは、maruru01さん。 ごちゃごちゃになってたみたいで、今朝から始めからmaruru01さんので設定しなおしました。そうしたら無事出来るようになりました。 本当に有難うございました。 で、もう1つ質問ですが、同じフォームで住所コードってあるですが、同じ様にしたい場合は、同じ設定でコード名等を変えるだけで良いのでしょうか?

renault
質問者

補足

度々お返事有難うございます。 実行時エラー クエリ式'営業部員コード=’の構文エラー;演算子がありません って出てきます。 デバックで担当者=~の担当者の所は相変わらずNull値ってマウスを近づけたら出ますが・・・ ご迷惑お掛けしますが宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 >顧客台帳の営業部員コードのフィールドに営業部員コードNOを入力したら とありますが、顧客台帳というフォームにある[営業部員コード]というテキストボックスに値を入力したらということですよね。 そういう仮定で、 担当者 = DLookup("担当者", "CAコード", "営業部員コード = '" & Me![営業部員コード] & "'") でどうですか。 では。

renault
質問者

補足

アドバイス有難うございます。 教えていただいたように入力してみたら、演算子が見つかりませんってエラーメッセージが出ました。 1つ疑問に思ったんですが、担当者=DLookup~の担当者にマウスを近づけた時にNull値って出たのですが、担当者=Dlookup~の前に If Not IsNull(営業部員コード)Thenって式を入れてるのですがそれが原因なのでしょうか? 宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • nek
  • ベストアンサー率34% (46/135)
回答No.1

担当者=DLookup("担当者","CAコード","営業部員コード='" & 営業部員コード & "'") でいけると思います。 テキスト型の場合は前後を ' で挟む必要があります。

renault
質問者

お礼

有難うございました。 教えていただいたとおりに入力してみて、フォームに営業部員NOを入れてみたのですが、実行時のエラーでクエリ式営業部員コード="'"の構文エラー演算子がありませんって出てしまいました。 これって、担当者=の前に If Not IsNull(営業部員コード)Then と入れたのですがこれが原因でしょうか? Empty値ってなってるのが原因でしょうか? お手数かけますが宜しくお願いします。

renault
質問者

補足

教えていただいたとおりに入力してみて、フォームに営業部員NOを入れてみたのですが、実行時のエラーでクエリ式営業部員コード="'"の構文エラー演算子がありませんって出てしまいました。 これって、担当者=の前に If Not IsNull(営業部員コード)Then と入れたのですがこれが原因でしょうか? Empty値ってなってるのが原因でしょうか? お手数かけますが宜しくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Access DLookup関数で複数条件の記述

    とても困っているので、どなたか教えて下さい! 今AccessでDLookup関数を使ってフィールドの値を取り出そうとしているのですが、 色んなエラーメッセージが出て先に進めません。 ★値を取り出そうとしているテーブル★ ■顧客台帳  ・顧客ID(オートナンバ)  ・顧客氏名(テキスト型)  ・生年月日(日付・時刻型)      以下略 ここから DLookup("顧客ID", "01顧客管理台帳", "顧客氏名 = " & Chr(34) & Me.Txt顧客氏名 & Chr(34) And "生年月日 = " & Me.Txt生年月日) 補足:Me.Txt顧客氏名(書式なし)    Me.Txt生年月日(日付(S)定型入力9999/99/99)    は、事前に入力されているものとします。 という式を使って、入力した顧客氏名と生年月日に一致する顧客IDを取り出したいのですが、 「型が違います」というエラーが出てしまいます。 条件式に[ ]等をつけてみても、「指定した式で参照されている'|'フィールドが見つかりません」 という様なエラーが出てしまいます。 条件の部分が間違っていると思うのですが、この式、またはやり方の問題点がお分かりになる方がおられましたら、ご指摘の方よろしくお願いいたします。

  • 【Access97】DLookupについて

     Access97を使って今、データベースを作成していますが、行き詰まってしまいました。  まず大まかな構成を書くと… <テーブル> 【○○班データ】テーブル ・「データナンバー」フィールド ・「部材名」フィールド ・「部材ナンバー」フィールド ・「部材コード」フィールド 【部材マスター】テーブル ・「部材名」フィールド ・「部材ナンバー」フィールド ・「部材コード」フィールド <クエリー> 【○○班データクエリー】 「○○班データ」テーブルを元に選択クエリーを作成(全てのフィールド) <フォーム> 上記のクエリーを元に作成。 ここからが質問内容になるのですが、「部材名」をコンボボックスで入力したら、Dlookup関数をテキストボックスのコントロールソースに記述して「部材ナンバー」と「部材コード」が表示されるようにはできました。 ですが、フォームで表示された「部材ナンバー」や「部材コード」がクエリーやテーブルには反映(入力)されておらず、どうしたらいいか手詰まりになっています。 もし、対処法を御存知の方がいらっしゃったら、是非とも御教示をお願いします。 念の為にテキストボックスのコントロールソースで記述したDLookup関数を書いておきます。 「部材ナンバー」の呼び出し =DLookUp("[部材ナンバー]","[部材マスター]","[部材名]='" & [部材名] & "'") 「部材コード」の呼び出し =DLookUp("[部材コード]","[部材マスター]","[部材名]='" & [部材名] & "'")

  • Access DLookup関数 行で指定

    Access2000 DLookup関数のcriteria部でクエリ指定行の値を求めたいのですが分かりません。 <参考> DLookup("フィールド", "クエリ", "指定行=10") クエリの10行目に有るフィールドの値を求める場合、criteria部の書き方を教えて下さい 検索で探したのですが見つける事が出来ませんでした・・。

  • Access2000 DLookup関数の使い方

    色々試してみたのですがわからないので質問させていただきます。 フォーム/サブフォームを作っています。 サブフォームにある商品コード(コンボボックス)を入力すると、同じサブフォームにある単位、単価に商品台帳テーブルの値(単位、単価)を持ってくるようにしたつもりなのですが・・・。 商品コードの更新処理後に以下のコードを記述したのですが、うまく動きません(エラーは出ない)。 Me![単価] = DLookup("[単価]","商品台帳","[商品コード] = [Forms]![フォーム]![サブフォーム]![商品コード]") どこが悪いか教えていただけないでしょうか?

  • (access ) dlookupの抽出について

    「会社テーブル」 **企業コード **商品コード *会社名 「商品テーブル」 **商品コード **担当者コード *商品名 「住所テーブル」 **担当者コード *担当者名 *住所 仮に上記のようなテーブルがあり、下記がその条件式です =DLookUp("担当者名","住所テーブル","[担当者コード] = " & [テキスト入力欄]) フォーム上の[テキスト入録欄]に 「**担当者コード」 の値を入力し、 担当者名 や 住所 を任意のテキスト枠に返します。 その方法で[会社テーブル]の会社名を返す場合はどのようにしたらいいのでしょうか 上記のテーブルの通り、会社名には 担当者コード が存在しておりません 企業コードや会社コードを入力するという方法は二度手間になるためやりたくありません フォームを作成して3つのテーブルを繫ぎ、下記の式で抽出しようと試みましたができません =DLookUp("会社名","フォーム","[担当者コード] = " & [テキスト入力欄]) どなたか方法を教えてください

  • Access2000のDLOOKUPについて

    Access2000にて収支管理のDBを作成中です。 フォームのDLOOKUPの設定についてお聞きしたいのですが、 テーブル 「00_Account code」に 「Account code」と「Account code テキスト」があります。 これを 「01_収支テーブル入力_フォーム」にて「Account code」入力時に「00_Account code」テーブルから「Account code テキスト」抽出しようと思い下記のような式を入れています。 =DLookUp("[Account code テキスト]","[00_Account code]","[Account code] =[Forms]![01_収支テーブル入力_フォーム]![Account code] ") しかしフォームにて[Account code]を入力してエンターをしても表示されず、一度フォームを閉じてから再度開くと表示されるという現象におちいっています。 これを入力→エンター時に表示させる方法はありますでしょうか? 何かの設定かと思うのですが・・・ぶつかっています。 どなたかお教え願えると助かります。よろしくお願いいたします。

  • DLookup Excel→Access

    エクセルVBAからアクセスのデータベースへ接続し テーブルの値を取得したいのですが エクセルVBAで mystr = DLookup("[フィールド]", "Tテーブル", "[名前] = '検索文字'") と言うコードでアクセスのデータを取得することはできませすか? テーブル名とフィールド名は指定できたのですが ファイル名の指定はどうすればいいのでしょうか? オフィス2010です。

  • AccessのDlookup関数の使い方を教えて下さい。

    超初心者です。どうぞよろしくお願いします。 教職員で出欠記録の管理をAccessでやろうと思っています。 AccessのDlookup関数の使い方が分かりません。 テーブルA:      フィールド名:授業日      データ   :2009/4/7            :2009/10/5 テーブルB:      フィールド名:期間名称   初日   最終日      データ   :前期    2009/4/1  2009/9/30            :後期    2009/10/1  2010/3/31 があるとします。クエリーの中でテーブルBの条件を見ながら テーブルAのデータを判断させて             授業日      期間名称      データ   :2009/4/7  →→→ 前期            :2009/10/5 →→→ 後期 と表示させたいのです。Dlookup関数でやれると思っているのですが うまくいきません。何とかならないでしょうか。今までは手入力していましたが無駄に思えます。 1.クエリーの中で 2.できるだけ簡単に を条件として何とかなりませんか。 モジュールとかVBAは全く分かりません。”簡単”というのを第一にお願いします。 なお,うまくいくようなら当然Dlookup関数にはこだわりません。 以上,よろしくお願いします。          

  • AccessのDLookupについて

    AccessのDLookupについての質問です。 いろいろ調べたのですがわからなかったので教えてください。 テーブル「社員」…ID、社員コード、氏名、所属、回数 フォーム…テーブルと同項目 フォームで社員コードを入力すると、自動的に氏名、所属が表示されるようにしました。 しかし、所属が変更になった社員氏名がうまく表示できません。 ~例~ ID_社員コード_氏名 _所属_回数 1_1234   _山田 _東京_1 2_1234   _山田 _東京_2 3_1234   _山田 _大阪_3 とあったときに、表示したいのはID_3のデータなのですが、ID_1のデータが表示になってしまうのです。(回数が最大の氏名、所属を表示したい) x = Nz(DMax("回数", "社員", "社員コード=" & [社員コード]), 0) Me!氏名 = DLookup("氏名", "社員", "社員コード=" & [社員コード]) _ & " and 回数=" & x) としています。エラーは出ません。 どこが変なのでしょう? よろしくおねがいします。

  • アクセス DLookUpについて

    職員番号入力後、自動で部署コードを入力できるようにしたいのですが、このアクセスのフォームで、正常に動くフォームと動かないフォームがあり困っております。どこが悪いか御教示お願いできませんでしょうか。 -------------------------------------------------------- 使用テーブル T_職員名簿 : ID、氏名漢字、氏名カナ、部署コード、部署名 イベントプロシ―ジャ内容 Private Sub 職員番号_AfterUpdate() Me.[部署コード] = DLookup("部署コード", "T_職員名簿", "職員番号= " & Me![職員番号] & "") End Sub エラー内容 イベントプロパティに指定した式更新後処理でエラーが発生しました。 --------------------------------------------------------

専門家に質問してみよう