回答編集履歴
2
コード微修正
answer
CHANGED
@@ -20,11 +20,11 @@
|
|
20
20
|
作業月 Between '2020年08月' AND '2020年10月'
|
21
21
|
```
|
22
22
|
|
23
|
-
|
23
|
+
VBAはSQLコードをコードとして解釈できないので、このSQL条件式をVBAの文字列にします。
|
24
24
|
VBAの文字列は"で囲みます。('では囲めません。)
|
25
25
|
|
26
26
|
```VBA
|
27
|
-
"作業月 Between ""2020年08月"" AND ""2020年10月""
|
27
|
+
"作業月 Between ""2020年08月"" AND ""2020年10月"""
|
28
28
|
|
29
29
|
または
|
30
30
|
|
1
説明追記
answer
CHANGED
@@ -50,4 +50,37 @@
|
|
50
50
|
strSearch = strSearch & _
|
51
51
|
"(作業月 Between '" & Format(Me.Time_start,"yyyy\年mm\月") & _
|
52
52
|
"' AND '" & Format(Me.Time_End,"yyyy\年mm\月") & "')"
|
53
|
-
```
|
53
|
+
```
|
54
|
+
|
55
|
+
---
|
56
|
+
> フォームで「月範囲指定」したい場合、どのような検索仕様にするのがスマートなのでしょうか。
|
57
|
+
|
58
|
+
自分なら下記の2つのどちらかにします。
|
59
|
+
|
60
|
+
**1.テキストボックスの定型入力を使う。**
|
61
|
+
|
62
|
+
|プロパティ|設定値|
|
63
|
+
|:--|:--:|-
|
64
|
+
|定型入力|0000\年00\月;0;_|
|
65
|
+
|自動タブ|はい|
|
66
|
+
|
67
|
+
このように設定しておくと、Time_startテキストボックスで
|
68
|
+
「202008[Enter]202010」と入力するだけで、"2020年08月"、"2020年10月"という文字列になります。
|
69
|
+
キーボード入力をメインに高速入力したい場合はつかう手法です。
|
70
|
+
文字持つ列になっているので、VBAはFormat変換する必要はなくなります。
|
71
|
+
|
72
|
+
```vba
|
73
|
+
strSearch = strSearch & " AND "
|
74
|
+
strSearch = strSearch & _
|
75
|
+
"(作業月 Between '" & Me.Time_start & _
|
76
|
+
"' AND '" & Me.Time_End & "')"
|
77
|
+
```
|
78
|
+
|
79
|
+
**2.年月選択はコンボボックスでする。**
|
80
|
+
|
81
|
+
コンボボックスの値集合タイプを「テーブル/クエリ」、値集合ソースを下記のように設定します。
|
82
|
+
```
|
83
|
+
SELECT DISTINCT 作業月 FROM Q_月次_勤怠稼働クエリ ORDER BY 作業月;
|
84
|
+
```
|
85
|
+
これでQ_月次_勤怠稼働クエリ内の作業月がリストに表示されますのでそれで年月を選択できます。
|
86
|
+
これも文字列になってますので、1.の場合と同じvbaでstrSearchに代入できます。
|