Access DLOOKUPについて

このQ&Aのポイント
  • Access2010でのDlookupについて解説します。
  • フォームに配置された「判定」というテキストボックスのコントロールソースに以下の条件を適用し、結果を表示する方法を説明します。注文テーブルの商品コードと確認用注文テーブルの商品コードを比較し、注文テーブルの商品コードのデータが確認用注文テーブルの商品コードに含まれているかどうか、注文テーブルの数量と確認用注文テーブルの数量がイコールかどうか、注文テーブルのお店番号と確認用注文テーブルのお店番号がイコールかどうかを判定します。
  • Dlookupだけでなく、他の方法も存在しますので、それらについても紹介します。
回答を見る
  • ベストアンサー

Access DLOOKUPについて

Access DLOOKUPについて こんにちは。Access2010でのDlookupについてお教えください。 ■注文テーブル オーダーID,商品コード,数量,お店番号 001,A01,1,お店1号 001,A02,5,お店1号 002,B01,3,お店2号 002,B02,3,お店2号 ※同一オーダーIDで商品コードが重複する事は無 ■確認用注文テーブル 商品コード,数量,お店番号 A01ですよ,1お店1号 B02です,3,お店2号 ※なんと、オーダーIDがありません。さらに商品コードに変な文字列も入っています。 ■やりたい事 フォームに「判定」というテキストボックスを配置しました。 コントロールソースで以下の条件にあっているなら○、あっていないなら×と表示したいです。 ○注文テーブル.商品コードと確認用注文テーブル.商品コードを比較。 注文テーブル.商品コードのデータが確認用注文テーブル.商品コードに含まれていること。 ○注文テーブル.数量と確認用注文テーブル.数量がイコールであること。 ○注文テーブル.お店番号と確認用注文テーブル.お店番号がイコールであること。 これらを満たしていれば、○、満たしていなければ×と表示したいです。 Dlookupでなくても、何か他に方法がありましたらお教えください。 宜しくお願いします。

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

クエリでの表示になりますが、以下でどうでしょうか SELECT Q1.オーダーID, Q1.商品コード, Q1.数量, Q1.お店番号, IIF(Q2.商品コード Is Null,"×","○") AS 判別 FROM 注文テーブル AS Q1 LEFT JOIN 確認用注文テーブル AS Q2 ON (Q1.数量=Q2.数量) AND (Q1.お店番号=Q2.お店番号) AND Q2.商品コード Like '*' & Q1.商品コード & '*'; DLookup するのであれば、上記クエリに対して XX = DLookup("判別","クエリ名","商品コード=' & [商品コード] & "'") とかすれば良い様な気がします。 上記クエリを使わない方法としては、DLookup内にゴリゴリ記述すれば良さそうです。 例えば、テキストボックスのコントロールソースに =IIF(IsNull(DLookup("商品コード","確認用注文テーブル", "数量=" & [数量] & " AND お店番号='" & [お店番号] & "' AND 商品コード Like '*" & [商品コード] & "*'")) ,"×","○") とか・・・ ※ [ ] で囲っている部分は、注文テーブルでのものになります。 ※ 処理性能はわかりません。

mellow91
質問者

お礼

ご回答ありがとうございます!JOINでLIKEを使えるなんて目から鱗です。やりたいことができました!感謝です!

その他の回答 (1)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

#1です 補足です。 提示された条件で重複するものがあったら、おかしくなっていくと思います。

関連するQ&A

  • Access リレーションとデータの参照について

    パソコンはアクセスとエクセルマクロの入門書を読み終えたレベルです。 只今、注文実績管理をする為にアクセスを構築していますが思うようにできません。 職場でPCの相談する相手がいないため、大変困っています。どなたかお知恵をください。 相談の内容ですが、【C】の注文テーブルにある「注文番号」と「数量」と「日付」で 期間中の発注実績の集計をしたいと考えています。 【B】と【C】がまったく関連付けることができません。 【A】顧客テーブル    (1)ID(オートナンバー)    (2)発注コード    (3)氏名     (注)顧客テーブルにある「発注コード」がローマ字と数字の組み合わせで        、これでリレーションシップを設定したいのです。 【B】商品テーブル    (1)ID(オートナンバー)    (2)注文番号    (3)品名    (4)金額 【C】注文テーブル    (1)ID(オートナンバー)    (2)発注コード    (3)日付    (4)氏名    (5)注文番号1    (6)注文番号1(数量)    (7)注文番号2    (8)注文番号2(数量)    (9)注文番号3    (10)注文番号3(数量)     ・     ・     ・     注文番号50     注文番号50(数量)

  • 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) としています。エラーは出ません。 どこが変なのでしょう? よろしくおねがいします。

  • AccessのDlookupの引数設定について

    テーブルA ID | val ---------   01 | 001 02 | 002 03 | 003 04 | 004 05 | 005 テーブルB ID | val ---------   01 | 001 02 | 002 03 | 003 05 | 005 テーブルAとBのレコード数はいずれも約30万件あります。 本来AとBは同数のレコードをもつはずなのですが、数件の差異があることがわかりました。 それが何かを調べたいのですが、その方法についてご教示ください。 エクセルであれば、Vlookupを使い テーブルA ID | val | Vlookup式 --------------------   01 | 001 | 001 02 | 002 | 002 03 | 003 | 003 04 | 004 | Null 05 | 005 | 005 という方法で発見できるのですが、なにせ件数が多いため、慣れないAccessを使ってやろうと考えました次第です。 で調べると、Vlookupに似たDlookup関数というのがあるではありませんか。 そこで、「クエリデザインの作成」→「テーブルの表示」ウィンドウの「テーブル」タブから「テーブルA」を選択→項目「ID」「val」をデザイングリッドに展開しました。 そして、新規フィールドを選択→ビルダーをクリック→ここでDlookupを選択しました。 しかし、以下の式の引数をどのように設定すればよいのかではたと立ち止まってしまいました。  DLookUp(«expression», «domain», «criteria») どう設定すれば、エクセルにおけるVlookupのようなことが実現できるでしょうか。 あるいは、もっと適当な方法がありましたらご教示いただければ幸いです。 ちなみに、環境はAccess2010を使っています。 よろしくお願いします。

  • Access select句でのサブクエリ

    Access2010でのサブクエリについてお教えください。 注文テーブル 商品コード,数量,フラグ A,3,x B,2,x C,1,x A,3,y B,4,y C,3,y このようなテーブルがあります。 SELECT 商品コード,数量 FROM 注文テーブル GROUP BY 商品コード A,6 B,6 C,4 やりたい事はフラグがxの数量も表示たいと思っています。結果としては、下記の結果が欲しいです。 A,6,3 B,6,2 C,4,1 select句でサブクエリを作りました。 SELECT 商品コード,数量,(SELCT 数量 FROM 注文テーブル WHERE フラグ='x' GROUP BY 商品コード) FROM 注文テーブル GROUP BY 商品コード しかしこのコードを実行すると、「このサブクエリでは1つのレコードしか返せません」と表示されます。 どこを修正したら正しいデータを取得することができるでしょうか?

  • アクセス DLookUpについて

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

  • ACCESSのテーブル設計とクエリ

    ACCESS初心者です。 ACCESS2010 OSはWindows7です。 パソコンはアクセスとエクセルマクロの入門書を読み終えたレベルです。 只今、注文実績管理表を作成するために、必要な情報を複数のテーブルに 分解してコード化していますが、関連付けできない為にデーターの参照ができません。 対応方法があれば教えていただくようお願いします。 どうしても実現したいので、テーブルの設計が間違えているかもしれませんが写真を掲載します。 ■現在の状況と質問 A)商品だけで300アイテムあります。リストを見ながら商品名と金額を入力するのは、膨大な時間を奪われるので、発注書に書かれている。4ケタの商品番号と注文数量の入力のみに したい。その後に入力した4ケタの数字でデーターを集計し、分析業務につなげていきたい B)【C】と【D】は注文書のイメージです。ひとり最大50個の商品を一枚の注文書で 発注します(ひとりの注文が1か月に1~3回)。一回の注文で最大、50品目のデーターを 格納することは、アクセスで可能なのでしょうか? C)発注実績の抽出ですが、以下内容で実行したいです。どうすれば可能でしょうか?   テーブルの設計と関連付け、リレーションの設定がわかりません。   i)個人別の1か月注文実績。商品名、注文合計数、合計金額を商品別に表示   ii)個人別の注文合計金額(月、年間)の集計。   iii)商品Aの注文実績(月、年間) D)リレーションの状態。 【A】の(2)と【C】の(2)  【B】の(2)と【D】の(3)、(5)、(7)、(9)、(11)、(13)、(15)、(17)、(19)・・・ 【C】の(1)と【D】の(2)のみ参照整合性がとれています。 E)商品テーブルのドリルボタンを押して、下の階層を見ようとすると、画像のような メッセージがでます。これはなんなのでしょうか? ■現在の状況を列挙します。 【A】顧客テーブル (1)顧客ID(オートナンバー・・・長整数型) 主キー(2)発注コード(テキスト型)         ※発注コードは『英数字』のためテキスト型。リンク先も『テキスト型』 (3)氏名(テキスト型) 【B】商品テーブル (1)商品ID(オートナンバー・・・長整数型) 主キー(2)注文番号(数値型・・・倍精度浮動小数点型) (3)品名(テキスト型) (4)金額(通貨型) 【C】注文テーブル 主キー(1)注文ID(オートナンバー・・・長整数型)    (2)日付 (3)発注コード(テキスト型)        ※発注コードは『英数字』のためテキスト型。リンク元も『テキスト型』 【D】注文明細テーブル(注文番号は全て4ケタの数字です。重複Noはありません) 主キー(1)注文明細ID(オートナンバー型・・・長整数型) (2)注文ID(長整数型) (3)注文番号1(数値型・・・長整数型) (4)数量(注文番号1) (5)注文番号2 (6)数量(注文番号2) (7)注文番号3 (8)数量(注文番号3) (9)注文番号4 (10)数量(注文番号4) ・ ・ ・※注文番号50まで続く・・・

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

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

  • アクセス DLookup

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

  • 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関数にはこだわりません。 以上,よろしくお願いします。          

  • Access2000 DLookup関数の使い方

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