パソコン(ソフト)

【Access】Dlookupなどで、文字列、数値、and検索時の注意

結構、非連結テキストボックスなどに、Dlookup関数などを使ってデータを検索、抽出して表示させるケースがあります。

しかし、文字列や数値によって書き方が違っているとエラーになり表示することができません。

特に、「and」などを使って複数検索させたりする場合は、ちょっとしたカンマなどでエラーになる場合があります。

今回は、その注意点についてまとめてみました。

 

※Dlookup関数の使い方ではなく、数値、文字列の違いの解説になります。

使い方のレクチャーページは、下記に参考リンクを貼っておきました。

 

 

 

 

数値、文字列の違い

 

数値と文字列では、ちょっと書き方が変わってきます。

ルールとしては、

  1. 条件式部分全体をダブルクォーテーションでくくる
  2. =の後は、数値ならそのまま、文字列ならシングルクォーテーションでくくる
  3. 変数で指定する場合は”[終了確認]=” & 変数 & “)”

 

となるようです。今一つわかりませんよね。
具体例に沿ってやっていきたいと思います。

 

●数値の場合

DLookup([品名], "商品マスタ", "[NO] = 123")

 

●文字列の場合

DLookup([品名], "商品マスタ", "商品番号 = 'A123'")

 

 

●数値変数の場合

DLookup([品名], "商品マスタ","NO = " & [番号])

DLookup([品名], "商品マスタ", "NO = "& Forms![フォーム名]!番号)

DLookup([品名], "商品マスタ", "NO = "& Me.検索番号)

DLookUp("progress","Vew_master_progress","[no] =" & [Progress])
※コントロールソースに埋め込むとき

 

 

●文字列変数の場合

DLookup([品名], "商品マスタ","番号 = '" & [商品番号] &"'")

DLookup([品名], "商品マスタ", "番号 = '"& Forms![フォーム名]!商品番号 &"'")

DLookup([品名], "商品マスタ", "番号 = '"& Me.商品番号 &"'")

 

複数検索抽出の場合

 

●数値の場合

DLookup([品名], "商品マスタ", "[NO] = 123 and [PNO] = 555")

 

●文字列の場合

DLookup([品名], "商品マスタ", "番号 = 'A123' and ID番号 = 'J555'")

 

 

●数値変数の場合

DLookup([品名], "商品マスタ","NO = " & [番号] and NO = "& Forms![フォーム名]!番号)

 

 

●文字列変数の場合

DLookup([品名], "商品マスタ","NO = '" & [番号] &"' and NO = '"& Forms![フォーム名]!番号 &"'")

●数値文字列混合の場合

DLookup([品名], "商品マスタ","NO = " & [番号] and 番号 = '"& Forms![フォーム名]!番号 &"'")

 

 

訳が分からない状態

参考サイトをみて、その通りにやってもエラーがでてできない場合があります。

 

Access実行時エラー3075演算子がありません

文字列型の場合は、シングルコーテーションが必要なのですが、無いと上記のエラーがでます。

 

Me.受注製品コード = DLookup("製品名コード", "dbo_mst_product","製品名コード=" & Me.製品コード検索)

じゃなくて、

Me.受注製品コード = DLookup("製品名コード","dbo_mst_product","製品名コード='" & Me.製品コード検索 & "'")

 

結構しらべるのに大変だった。

 

ちょっとでも間違うとコンパイルエラー

VBAにて、Dlookup関数を設定しましたが、ちょっとでも間違うとコンパイルエラーがでます。

結局、下記の文字列複数条件にてうまくいったが、これにたどり着くまでカンマの位置で苦労した。

 

Me.テキスト9 = DLookup("値段", "商品マスタ", "分類= '" & [Forms]![抽出フォーム]![コンボ5] & "' and 商品名= '" & [Forms]![抽出フォーム]![コンボ7] & "'")

 

●あいまい検索”*”を使う時

うまく動いた参考例だけを書いておきます。

 

DCount("*", "住所データ", "氏名 Like '*" & 名前検索窓 & "*'")

 

Me.RecordSource = "Select * From 住所データ Where 氏名 Like '*" & Me!名前検索窓 & "*'"

-パソコン(ソフト)
-, , , , , ,

Translate »

© 2024 PCTips