Access Dlookup関数で数字以外のコードを引っ張ってこれない問題について

このQ&Aのポイント
  • ExcelのVlookと異なり、AccessのDlookup関数では数字以外のコードを引っ張ることができない問題に悩んでいます。
  • 具体的には、「T_得意先マスタ」テーブルの得意先コードフィールドに「aaa」というコードがあり、得意先名フィールドには「○○商事」という値が入っています。
  • しかし、Dlookup関数を使ってこのコードを引っ張ろうとすると、なぜか数字(例えば123)にすると結果が取得できますが、文字列のままでは取得できません。なぜでしょうか?
回答を見る
  • ベストアンサー

Access Dlookup関数について

Dlookupで悩んでいます。 ExcelのVlookと違い、“数字”のコードでなければ引っ張ってこれないのでしょうか? 以下、がその内容です。 「T_得意先マスタ」の得意先コードフィールドに aaa というコードがあり、得意先名フィールドに ○○商事 とあります。 どうやってもできないのです。 なぜか、aaa ではなく、数字(例. 123)にすると出ます。 教えてください。 Private Sub 得意先コード_AfterUpdate() Dim a As Variant, b As String b = "得意先コード = " & Me![得意先コード] a = DLookup("得意先名", "T_得意先マスタ", b) If IsNull(a) = True Then Me.テキスト1.Value = "該当がありません。": Me![得意先コード] = Null Else Me.テキスト1.Value = a End If End Sub

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

  • ベストアンサー
noname#110201
noname#110201
回答No.1

つまり得意先コードというのはテキスト型なのでしょうか。 そうであれば、 b = "得意先コード = '" & Me![得意先コード] & "'" として試してみてください。 Where条件で、テキスト型の定数はアポストロフィ(')で囲みます。

yukorin_t
質問者

お礼

できました! すごいです! 感謝しています!! ありがとうございました。

関連するQ&A

  • Access DLookUp関数について

    DLookup関数を使用して、フォーム上にテーブルの値を返したいと思い、 試行錯誤をしたのですが、思うように値が返されません。。。 どうかお力添え下さいますようお願い致します。 「得意先&出荷先」テーブルに「得意先コード」「名称」項目を設け、 「詳細入力」フォームの「得意先コード」に値を入力をすると、 「得意先名称」項目に、テーブルの「名称」項目の値を返す動作を設定したいのです。 私は、下記のように書きましたが、「#Type!」と表示され、思うような動作をしません。 =DLookUp("[名称]","[得意先&出荷先]","[得意先コード] = '" & [Forms]![不具合詳細入力フォーム]![得意先名称] & "'") どこがおかしいのでしょうか?? またDLookUp以外でも、もし上記のような動作を実現させる方法がありましたら、ぜひご教授ください! 宜しくお願いいたします。

  • アクセス DLookup関数 なぜエラーになるのか

    アクセス DLookup関数 なぜエラーになるのかわからないです。 testと言うテーブルがあり、a・bと言うフィールドがあります。 aフィールドにあああと入ってる場合のbフィールドの値を取得したいのですが Debug.Print DLookup("[b]", "test", "[a] = あああ") だと、 実行時エラー2471「クエリ パラメータとして指定した式でエラー'[あああ]'が発生しました。」 になります。 どこがおかしいのか教えていただけますか?

  • 【Access97】DLookupについて

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

  • 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関数

    Dlookup関数を使えば、クエリの抽出条件に他のテーブルや、クエリの結果を使うことがわかりました。 しかし抽出条件が抽出するデータの種類(品種)により複数有る場合、その種類ごとにDlookup関数で指定しなければなりません。 そこで関数のDLookup(expr, domain [, criteria] ) 引数 criteriaを工夫する事で複数の条件をひとつの関数で出来ないものでしょうか。 例 品種tbl 品種 | 範囲(以下) A | 100 B | 150 <抽出条件欄> Dlookup("範囲","品種tbl",[品種tbl]="A") Dlookup("範囲","品種tbl",[品種tbl]="B") 個の二つをひとつで出来ないものでしょうか。 またよく以下のような表記を見ますが、「& Me.車番入力欄 &」はどう解釈したらいいのでしょうか。 DLookup("[全長]","車種","[車番] = '" & Me.車番入力欄 & "'")

  • アクセス DLookUpについて

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

  • ACCESS クエリからテーブルへのコピペ

    Pzrivate Sub cmb品番_AfterUpdate() Dim Rst As DAO.Recordset Dim z As String z = DLookup("コード", "Q_コンポーネント", "専用コード='" & Me.tx専用コード & "'") Set Rst = CurrentDb.OpenRecordset("W_部品一覧", dbOpenTable) With Rst .AddNew .Fields("区分") = DLookup("部門", "Q_マスタ", "専用コード='" & z & "'") .Fields("分類1") = DLookup("分類1", "Q_マスタ", "専用コード='" & z & "'") .Fields("分類2") = DLookup("分類2", "Q_マスタ", "専用コード='" & z & "'") .Fields("品番") = DLookup("材料", "Q_マスタ", "専用コード='" & z & "'") .Fields("品名") = DLookup("品名", "Q_マスタ", "専用コード='" & z & "'") .Fields("コード") = DLookup("コード", "Q_マスタ", "専用コード='" & z & "'") .Fields("品種") = DLookup("品種", "Q_マスタ", "専用コード='" & z & "'") .Fields("重量") = DLookup("重量", "Q_マスタ", "専用コード='" & z & "'") .Update End With Rst.Close Set Rst = Nothing End Sub ------------------------------------------------------------ 上記のコードで「Q_マスタ」クエリの内容を「W_部品一覧」テーブルにコピペしています。 ※「W_部品一覧」テーブルはサブフォームです。 「Q_マスタ」クエリの専用コードフィールドには「z」と一致する値が複数あるのですが、上記コードではそのクエリ内の一番上の1レコード分しかコピペできていません。 「z」の値が一致している全てのフィールドを「Q_マスタ」→「W_部品一覧」にコピペするようにしたいです。 For~NextやDo While~Loopを使って処理回数を増やしてみたのですが、同じレコードの内容が繰り返しコピペされてしまいました。 どうすれば複数のレコードをコピペできるかご教示頂けますようお願いします。

  • Access Dlookupの#エラーについて

    AccessのDlookupの使い方について教えてください。 添付のファイルのようにAテーブルの複数のフィルドからBテーブルの1つのフィルドに紐づけることはできないので、Dlookup関数で表示させようと思っています。 以下の通り関数をビルドにいれ、表示させると「#エラー」と表示されてしまい、エラーの箇所をクリックすると「抽出条件でデータ型が一致しません」と表示されてしまいます。 ※それぞれのテーブルのデータ型は全て「短いテキスト」となっております。 ご教授いただければと思います。よろしくお願いいたします。 施設得意先: DLookUp("得意先","T_KNA1","通常納入使用駅 =" & [T_MD-Net].[施設コード] & "")

  • ACCESSのデータシート形式のフォームでのDLookupについて

    お世話になります。 以下の様なコードでフォーム上の「bikou」という項目に商品マスタテーブル内の該当する商品コードの「商品名称」を代入しようと思います。 Private Sub 商品コードNo_BeforeUpdate(Cancel As Integer) Me!bikou = DLookup("商品名称", "商品マスタ", "商品コード='" & Me!商品コードNo & "'") End Sub これは単票形式のフォームではうまくいくのですが、データーシート形式ですと商品コードを入力する度にフォーム上に表示されている「bikou」がすべて塗り換わってしまいます。結果として最後に入力して商品コードの商品名称が、表示中のすべてのレコードの「bikou」に代入されてしまいます。そこで、「現在編集中のレコードの項目「bikou」のみに値を代入する(商品名称を代入する)」という指定を 行うプログラムの書き方はあるのでしょうか。 よろしくお願い致します。

  • アクセス DLookup

    myStr = DLookup("[感想]", "TEST", [感想] = "'A'") このコードがvbaでエラーになります。 実行時エラー13 型が一致しません になります。 TESTと言うテーブルは存在するし感想と言うフィールドは存在します。 エラーの原因を教えて下さい。