Microsoft Access 掲示板

BuildCriteria関数について / 2

7 コメント
views
4 フォロー
2
伝票NO="001" And 伝票NO="002" And 伝票NO="003"

というような条件になると、伝票番号が001かつ002かつ003のレコードを抽出という意味になりますが、それに該当する伝票はないですよね。(一つの伝票には一つの伝票番号しかないので)

伝票番号が001または002または003のレコードを抽出ということがご希望のことだと思いますので、イミディエイトウィンドウの結果が下記のようになるようにコードを修正しましょう。

伝票NO="001" Or 伝票NO="002" Or 伝票NO="003"

ちなみに、In演算子を使って下記の式でも上記と同じ結果になりますので、下記のようになるようなコードでもOKです。

伝票NO In ("001","002","003")
通報 ...
  • 4
    cerophan 2020/10/31 (土) 22:39:19 0029a@1c915 >> 2

    早速試し、上記の件についてはうまく行くことを確認いたしました!感謝です。

    しかし、当初の他の条件と重ね合わせる部分がうまくいきませんでした。
    以下コードで確認してみると
    
    Debug.Print Mid(strFilter, Len(" AND ") + 1)
    
    顧客ID = 123 AND 担当ID = 23 AND 伝票NO="001" Or 伝票NO="002" Or 伝票NO="003"
    
    とイミディエイトウィンドウに表示され、伝票NOの3つしか表示されません。
    

    顧客と担当で絞ったときはうまく表示されます。
    度々申し訳ございませんが、ご教示宜しくお願いいたします。

    6
    顧客ID = 123 AND 担当ID = 23 AND 伝票NO="001" Or 伝票NO="002" Or 伝票NO="003"
    

    ANDとORではANDの方が優先順位が高いので上の式だと下記のように評価されます。

    (顧客ID = 123 AND 担当ID = 23 AND 伝票NO="001") Or 伝票NO="002" Or 伝票NO="003"
    

    演算子の優先順位 | Microsoft Docs

    伝票NO の OR を先に評価させたい場合は()で囲むようにします。

    顧客ID = 123 AND 担当ID = 23 AND (伝票NO="001" Or 伝票NO="002" Or 伝票NO="003")
    
    7
    cerophan 2020/11/01 (日) 10:03:59 f1ed8@f7cb8 >> 4

    ありがとうございます!式を修正し、うまく動くようになりました。