検索ボタンを作成し、クリック時のプロシージャに下記のコードを記述しました。
作成日(日付)については下記のコードで抽出できたのですが、これを間口(距離)に応用するにはどうしたらいいか、数日前からいろいろやってみたり調べてみたりしているのですがうまくいきません。
Nz関数の前後の#"や"#"の意味がよくわかっていないののが問題なのですが、調べてもよくわかりません。
どのように記述すればよいのか教えていただきたく、どうぞよろしくお願いいたします。
|フィールド名| データ型 | 抽出方法 |
| 顧客名 |短いテキスト|あいまい検索 |
| 作成日 |日付・時刻型|2つのテキストボックスで範囲指定|
| 間口 |短いテキスト|2つのテキストボックスで範囲指定|
Private Sub 検索ボタン_Click()
Dim strFilter As String, strExp As String, aryOpe As Variant
If Not IsNull(Me.顧客名検索) Then
strFilter = strFilter & " AND 顧客名 Like '*" & Me.顧客名検索 & "*'"
End If
If Not IsNull(Me.作成日_min) Then
strFilter = strFilter & " AND 作成日 >= #" & Nz(Me.作成日_min) & "#"
End If
If Not IsNull(Me.作成日_max) Then
strFilter = strFilter & " AND 作成日 <= #" & Nz(Me.作成日_max) & "#"
End If
If Not IsNull(Me.間口_min) Then
strFilter = strFilter & " AND 間口 >= #" & Nz(Me.間口_min) & "#"
End If
If Not IsNull(Me.間口_max) Then
strFilter = strFilter & " AND 間口 <= #" & Nz(Me.間口_max) & "#"
End If
Me.Filter = Mid(strFilter, 5)
If strFilter = "" Then
Me.FilterOn = False
Else
Me.FilterOn = True
End If
End Sub
まず、間口フィールドのデータ型は数値型にしてください。
短いテキストでは大小比較ができません。
Filterに設定する条件式はSQL文になりますが、
SQLでは、
日付/時刻型は # で囲む、
テキストは ' で囲む、
という決まりがあります。
数値は囲まずにそのまま使用します。
ということで、下記のように修正するといいでしょう。
余裕があるなら、下記のページを参照して学習しておくと理解が深まると思います。
ありがとうございます!
うまくいきました!
どうやら「#」だと日付だと認識するらしい、とまでは気付いたものの、テキスト型で正しい、と思い込んでいたので「*」に変えてみたり、いろいろ見当違いなことをやってしまっていました。
教えてくださったように記述して、抽出結果が出た時には感動しました。
リンクしていただいたhatenaさんのサイト、お気に入りに追加しました。
勉強させていただきます。
職場で図面の登録・検索システムを作らねばならず、五十の手習いでネットや本でで調べたりコピペしたり四苦八苦していましたが、おかげさまで今回一気に進みました。
いつか私も他人様に教えられるくらいになりたいです。