公式アカウントからの投稿が始まります

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でなくても、何か他に方法がありましたらお教えください。
宜しくお願いします。

A 回答 (2件)

クエリでの表示になりますが、以下でどうでしょうか



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 '*" & [商品コード] & "*'"))
,"×","○")

とか・・・
※ [ ] で囲っている部分は、注文テーブルでのものになります。


※ 処理性能はわかりません。
「Access DLOOKUPについて」の回答画像1
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/04/14 10:21

#1です



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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!