お世話になります。
普通のフォーム上に、商品コードと在庫数というテキストボックスがあります。
商品コードの値によって、在庫数を引っ張ってきたいのですが
在庫数のコントロールソースに
=DLookUp("[在庫数]","T01_商品","[商品コード]='A10'")
とすると、在庫数が正しく抽出されますが、同フォーム上の商品コードからとってこようと
=DLookUp("[在庫数]","T01_商品","[商品コード]='" & [Me]![商品コード] & "'")
とするとエラーになってしまいます。
構文が違うのか、同フォーム上ではまだ商品コードを選択していない関係でdlookupをおくことはできませんか?
よろしくお願い致します。
構文はVBAと同じで問題ないけどほとんどのキーワードは使えません
Meも使えないので単に
& [商品コード] &
と記述して参照しましょうありがとうございます。
=DLookUp("[在庫数]","T01_商品","[商品コード]=& [商品コード] &)
ということでしょうか?
こちらもエラーになってしまいます。
よろしくお願い致します。
追伸。フォームのプロパティソースにmeが使えないってことでしょうか?以前使った例を見たことある気がしますがバージョンによるものでしょうか?
Me
が使えるのは、はフォームかレポートのモジュールのみです。コードの記述してあるオブジェクトという意味です。フォームのコントロールソースプロパティでは使えません。大昔から現在まで使えません。
下記の式でいいと思います。
DLookUpは重いので、オートルックアップクエリを使うのをお勧めします。
ACCESSの基本技 オートルックアップクエリは超便利
オートルックアップクエリの利用 - もう一度学ぶMS-Access
hatenaさま
ありがとうございました。'"&の使い方がまだいまいち混乱してしまいます。
オートルックアップクエリも参照させていただきました。
まだ難しいですが勉強してみます。
ありがとうございました😄
解決
分かりにくかったようですみません。実際に修正すべき部分だけを示すならば
です。前後の変更しない部分を表記したほうが分かりやすいかなと思ったんですが余計でした
解決してそうですがせっかくなので技術的な話を
DLookUpの第三引数にはWHERE句に相当する文字列を指定します。「文字列」なので実際に処理されるSQL構文を「"(ダブルクオーテーション)」で囲みます
今回の目的は「A10」を変数(フォーム上のテキストボックスの値)にしたいということなので、文字列の途中を抜き取るような形になります。元の文字列でそっくり残したい部分は前後に分割されて、それぞれで独立した文字列として「"」で囲みなおすことになります
そうして最後にそれぞれに分割した内容を文字列として連結するために「&」でつなぎます
結果
"[商品コード]='" & [商品コード] & "'"