teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

補足追記

2019/12/06 05:13

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -42,4 +42,20 @@
42
42
  テキスト型は条件の値を'で囲む。数値型は囲まないということです。
43
43
 
44
44
  この方がシンプルに記述できます。
45
- 上記の書き方を理解して、フィールドのデータ型に合わせて書き換えて下さい。
45
+ 上記の書き方を理解して、フィールドのデータ型に合わせて書き換えて下さい。
46
+
47
+ 補足
48
+ ---
49
+ 今回の質問のようなシンプルな条件の場合はBuildCriteriaを使わずに記述した方かすっきりします。
50
+ BuildCriteriaの使いどころとしては、例えばユーザーに下記のような複雑な条件を許可するようなときに有効です。
51
+ ```vba
52
+ strKey = "*あいう*"
53
+ strFilter = BuildCriteria("テキストフィールド", dbText, strKey)
54
+ Debug.Print strFilter ' "テキストフィールド Like '*あいう*'"
55
+
56
+ strKey = "あ or い or う"
57
+ strFilter = BuildCriteria("テキストフィールド", dbText, strKey)
58
+ Debug.Print strFilter ' "テキストフィールド = 'あ' OR テキストフィールド = 'い' OR テキストフィールド = 'う'"
59
+ ```
60
+
61
+ クエリの抽出条件欄に式を記述した時に生成されるSQLと同じような変換をしてくれます。

2

誤字修正

2019/12/06 05:13

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -29,7 +29,7 @@
29
29
  ---
30
30
  フィールドのデータ型で条件式がかわってきます。
31
31
  今回の場合は BuildCriteria を使わなくてもシンプルに記述できます。
32
- その方かコードが理解しやすいと思います。
32
+ その方かコードが理解しやすいと思います。
33
33
 
34
34
  対象フィールドがテキスト型の場合
35
35
  ```vba
@@ -39,5 +39,7 @@
39
39
  ```vba
40
40
  strFilter = " AND フィールド名=" & Me.コントロール名
41
41
  ```
42
+ テキスト型は条件の値を'で囲む。数値型は囲まないということです。
43
+
42
44
  この方がシンプルに記述できます。
43
45
  上記の書き方を理解して、フィールドのデータ型に合わせて書き換えて下さい。

1

コード追記

2019/12/06 03:06

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -1,14 +1,15 @@
1
1
  「フィールド事務員IDはテキスト型」ならば、
2
2
  ```vba
3
- BuildCriteria("案件ID", _
3
+ strFilter = " AND " & BuildCriteria("担当事務員ID", _
4
- dbLong, Me.txt案件ID)
4
+ dbLong, Me.cmd事務員ID)
5
5
  ```
6
6
  は、
7
7
  ```vba
8
- BuildCriteria("案件ID", _
8
+ strFilter = " AND " & BuildCriteria("担当事務員ID", _
9
- dbText, Me.txt案件ID)
9
+ dbText, Me.cmd事務員ID)
10
10
  ```
11
- にしてください。
11
+ にしてください。第2引数は、テキスト型は dbText 、数値型は dbLong を指定します。
12
+
12
13
  イミディエイトウィンドウで下記のように確認してみると違いが分かります。
13
14
  ```text
14
15
  ?BuildCriteria("案件ID", dbText, 111)
@@ -22,4 +23,21 @@
22
23
 
23
24
  > チェックボックスに✓を入れた時だけ条件とし,空の時は条件に含みたくありません。
24
25
 
25
- これはsaziさんの回答でOK。
26
+ これはsaziさんの回答でOK。
27
+
28
+ 追記
29
+ ---
30
+ フィールドのデータ型で条件式がかわってきます。
31
+ 今回の場合は BuildCriteria を使わなくてもシンプルに記述できます。
32
+ その方かコードが理解しやすいしと思います。
33
+
34
+ 対象フィールドがテキスト型の場合
35
+ ```vba
36
+ strFilter = " AND フィールド名='" & Me.コントロール名 & "'"
37
+ ```
38
+ 対象フィールドが数値型の場合
39
+ ```vba
40
+ strFilter = " AND フィールド名=" & Me.コントロール名
41
+ ```
42
+ この方がシンプルに記述できます。
43
+ 上記の書き方を理解して、フィールドのデータ型に合わせて書き換えて下さい。