回答編集履歴

3

説明追記

2022/03/09 12:15

投稿

hatena19
hatena19

スコア33775

test CHANGED
@@ -18,5 +18,9 @@
18
18
 
19
19
  あいまい検索のときは「*」で囲む必要があります。
20
20
 
21
+ **上記の式の解説**
22
+ 商品名検索に「AA AC」と入力されているとき、
23
+ `"*" & Replace(Me.商品名検索, “ “, “* And *”) & "*"`で`*AA* AND *AC*`と変換される。
24
+ BuildCriteriaメソッドはクエリの抽出条件に設定した条件式を解析してSQLのWhere句を生成する機能と同等のものになります。
25
+ `BuildCriteria("商品名”, dbText, "*AA* AND *AC*")`は、`商品名 Like "*AA*" And 商品名 Like "*AC*"`という条件式を出力します。
21
26
 
22
-

2

コード追記

2022/03/09 01:19

投稿

hatena19
hatena19

スコア33775

test CHANGED
@@ -3,8 +3,20 @@
3
3
  あと、あいまい検索でなくていいなら、Likeは不要です。
4
4
 
5
5
  ```vba
6
- 抽出 & " AND (" & BuildCriteria("商品名”, dbText, Replace(Me.商品名検索, “ “, “ OR ”)) & ")"
6
+ 抽出 = 抽出 & " AND (" & BuildCriteria("商品名”, dbText, Replace(Me.商品名検索, “ “, “ OR ”)) & ")"
7
7
  ```
8
+ ---
9
+ コメントによると、たぶん、あいまい検索のAND条件のようですね。(説明が「あいまい」なので判断が難しいですが)
10
+
11
+ 商品名検索に「AA AC」と入力したら、「AA-AB-AC」 がヒット、「AA-AB-CC」はヒットしない。
12
+
13
+ ```vba
14
+ 抽出 = 抽出 & " And " & BuildCriteria("商品名”, dbText,"*" & Replace(Me.商品名検索, “ “, “* And *”) & "*")
15
+ ```
16
+ 上記だと、商品名検索が「AA AC」の場合、下記になる
17
+ `AND 商品名 Like "*AA*" And 商品名 Like "*AC*"`
18
+
19
+ あいまい検索のときは「*」で囲む必要があります。
8
20
 
9
21
 
10
22
 

1

コード修正

2022/03/08 10:16

投稿

hatena19
hatena19

スコア33775

test CHANGED
@@ -3,7 +3,7 @@
3
3
  あと、あいまい検索でなくていいなら、Likeは不要です。
4
4
 
5
5
  ```vba
6
- 抽出 & " AND (" & BuildCriteria("商品名”, dbText, Replace("aaa BBB CCC", “ “, “ OR ”)) & ")"
6
+ 抽出 & " AND (" & BuildCriteria("商品名”, dbText, Replace(Me.商品名検索, “ “, “ OR ”)) & ")"
7
7
  ```
8
8
 
9
9