以前おたずねして、しばらく時間をおいて実装していたのですがうまくいかず、
時間を取って確認しようと後回しになっていた件についておたずねします。。スミマセン。
組み合わせの検索で、文字列である「伝票NO」を検索する件です。
下記コードを教えていただき、実装しました。
BuildCriteria("伝票NO", dbText, "" & Replace(Me.txt伝票NO, vbCrLf, " And ") & "")
DoCmd.OpenForm "F伝票", acNormal, "", Mid(strFilter, Len(" AND ") + 1), , acNormal
結果、うまく検索ができないのですが、ちなみに
Replace(Me.txt伝票NO, vbCrLf, " And ")
の部分をイミディエイトウィンドウで確認したら
伝票NO="001" And 伝票NO="002" And 伝票NO="003"
となっています。
ということは、
DoCmd.OpenForm "F伝票", acNormal, "", 伝票NO="001" And 伝票NO="002" And 伝票NO="003", acNormal
になっている?
直すべき部分を午前中考えていましたが、うまく行きません…
宜しければお力をお貸しください。
ちなみに、1つの伝票番号のみだと検索ができます。複数入れると何も検索できません。
というような条件になると、伝票番号が001かつ002かつ003のレコードを抽出という意味になりますが、それに該当する伝票はないですよね。(一つの伝票には一つの伝票番号しかないので)
伝票番号が001または002または003のレコードを抽出ということがご希望のことだと思いますので、イミディエイトウィンドウの結果が下記のようになるようにコードを修正しましょう。
ちなみに、In演算子を使って下記の式でも上記と同じ結果になりますので、下記のようになるようなコードでもOKです。
早速試し、上記の件についてはうまく行くことを確認いたしました!感謝です。
顧客と担当で絞ったときはうまく表示されます。
度々申し訳ございませんが、ご教示宜しくお願いいたします。
ANDとORではANDの方が優先順位が高いので上の式だと下記のように評価されます。
演算子の優先順位 | Microsoft Docs
伝票NO の OR を先に評価させたい場合は()で囲むようにします。
ありがとうございます!式を修正し、うまく動くようになりました。
なるほど!ありがとうございます!
後ほど試してみます!ありがとうございました😊
表示順が前後されてしまいましたが、試してみた結果新たに生まれた問題点を上の4に記載しております。。
申し訳ございませんが、ご確認をお願いいたします。