質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

1085閲覧

Dlookupの記述の仕方について

kisaragi

総合スコア1

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2022/09/04 07:12

Access初心者です。
購入した参考書をもとに勉強中です。
テキストを読み進めていたところフォーム作成時にテキストボックスのコントロールソースへ特定のデータを求める式を入力するところで
=DlookUp("fld_商品名","T_商品マスター","fld_商品ID=’ ” & [cmb_商品ID] & " ' ")
という記述がされていました。
条件の
fld_商品ID=より後の部分の記述の仕方ですが
①、cmb_商品IDを[]で囲む
②、①を&(アンパサンド)で囲む 
③、②を "(ダブルクォーテーション)で囲む
④、③を '(シングルクォーテーション)で囲む
以上4点のそれぞれの役割(決まり事)をご教授頂けたら幸いです。

テキストには商品IDに対応する商品名を取得できますとしか説明がなく、記述の仕方に関する説明文が一切載っておらずネット検索もしてみましたが未だ解決に至らず躓いております。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

① フォーム上のオブジェクト名(コントロール名orフィールド名orプロパティ名)ということを明確にする意味があります。(入力時に省略しても自動で補完されると思います。)

② & は文字列結合です。DlookUpの引数は文字列ですので、& で結合して文字列としての抽出条件式になるようにします。ちなみに、抽出条件式はSQL構文の式になります。

③ 式内で "(ダブルクォーテーション)で囲まれた部分は、文字列として解釈されます。

④ '(シングルクォーテーション)で囲まれた部分はSQL構文で文字列と解釈されます。これは、ld_商品ID がテキスト型なので、比較する値は文字列でないと一致しないので、文字列と解釈するように記述します。

AccessはSQL構文をそのまま解釈はできないので、Accessでの文字列としてSQL条件式を生成するように式を記述するということを理解してください。

例えば、[cmb_商品ID]に 「A001」というような値が入力されているとすると、
SQL条件式は下記になります。
fld_商品ID=’A001'
DLookupの引数は文字列である必要がありますので、"で囲みます。
"fld_商品ID=’A001'"
これで、A001が検索されますが、固定値ではなく、[cmb_商品ID]の値にしたいので、
A001の部分を & で切り離して、
"fld_商品ID=’" & "A001" & "'"
"A001"を[cmb_商品ID]に置き換えます。
"fld_商品ID=’" & [cmb_商品ID] & "'"
これをDLookupの第3引数に設定すれば完成です。

=DlookUp("fld_商品名","T_商品マスター","fld_商品ID=’” & [cmb_商品ID] & "'")

ちなみに、質問の式、
=DlookUp("fld_商品名","T_商品マスター","fld_商品ID=’ ” & [cmb_商品ID] & " ' ")
は商品IDの前後に半角スペースがあるので正しい結果は出ないと思います。

投稿2022/09/04 09:27

hatena19

総合スコア34362

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kisaragi

2022/09/04 09:50

早速のご回答ありがとうございます。質問文のコードのシングルクォーテーションとダブルクォーテーションは見やすいようにあえて半角スペースを入れてました。 まだ未修であるSQL構文とのつながりがあったんですね。タメになりました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問