回答編集履歴

2

コード微修正

2020/10/07 14:20

投稿

hatena19
hatena19

スコア33768

test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
 
44
44
 
45
- これをVBAはSQLコードをコードとして解釈できないのでVBAの文字列にします。
45
+ VBAはSQLコードをコードとして解釈できないので、このSQL条件式をVBAの文字列にします。
46
46
 
47
47
  VBAの文字列は"で囲みます。('では囲めません。)
48
48
 
@@ -50,7 +50,7 @@
50
50
 
51
51
  ```VBA
52
52
 
53
- "作業月 Between ""2020年08月"" AND ""2020年10月""
53
+ "作業月 Between ""2020年08月"" AND ""2020年10月"""
54
54
 
55
55
 
56
56
 

1

説明追記

2020/10/07 14:20

投稿

hatena19
hatena19

スコア33768

test CHANGED
@@ -103,3 +103,69 @@
103
103
  "' AND '" & Format(Me.Time_End,"yyyy\年mm\月") & "')"
104
104
 
105
105
  ```
106
+
107
+
108
+
109
+ ---
110
+
111
+ > フォームで「月範囲指定」したい場合、どのような検索仕様にするのがスマートなのでしょうか。
112
+
113
+
114
+
115
+ 自分なら下記の2つのどちらかにします。
116
+
117
+
118
+
119
+ **1.テキストボックスの定型入力を使う。**
120
+
121
+
122
+
123
+ |プロパティ|設定値|
124
+
125
+ |:--|:--:|-
126
+
127
+ |定型入力|0000\年00\月;0;_|
128
+
129
+ |自動タブ|はい|
130
+
131
+
132
+
133
+ このように設定しておくと、Time_startテキストボックスで
134
+
135
+ 「202008[Enter]202010」と入力するだけで、"2020年08月"、"2020年10月"という文字列になります。
136
+
137
+ キーボード入力をメインに高速入力したい場合はつかう手法です。
138
+
139
+ 文字持つ列になっているので、VBAはFormat変換する必要はなくなります。
140
+
141
+
142
+
143
+ ```vba
144
+
145
+ strSearch = strSearch & " AND "
146
+
147
+ strSearch = strSearch & _
148
+
149
+ "(作業月 Between '" & Me.Time_start & _
150
+
151
+ "' AND '" & Me.Time_End & "')"
152
+
153
+ ```
154
+
155
+  
156
+
157
+ **2.年月選択はコンボボックスでする。**
158
+
159
+
160
+
161
+ コンボボックスの値集合タイプを「テーブル/クエリ」、値集合ソースを下記のように設定します。
162
+
163
+ ```
164
+
165
+ SELECT DISTINCT 作業月 FROM Q_月次_勤怠稼働クエリ ORDER BY 作業月;
166
+
167
+ ```
168
+
169
+ これでQ_月次_勤怠稼働クエリ内の作業月がリストに表示されますのでそれで年月を選択できます。
170
+
171
+ これも文字列になってますので、1.の場合と同じvbaでstrSearchに代入できます。