Microsoft Access 掲示板

2つのテキストボックスで数字の範囲を抽出するときの記述の仕方

2 コメント
views
4 フォロー

検索ボタンを作成し、クリック時のプロシージャに下記のコードを記述しました。
作成日(日付)については下記のコードで抽出できたのですが、これを間口(距離)に応用するにはどうしたらいいか、数日前からいろいろやってみたり調べてみたりしているのですがうまくいきません。
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
きのこ
作成: 2019/08/28 (水) 14:58:47
通報 ...
1

まず、間口フィールドのデータ型は数値型にしてください。
短いテキストでは大小比較ができません。

Filterに設定する条件式はSQL文になりますが、
SQLでは、
日付/時刻型は # で囲む、
テキストは ' で囲む、
という決まりがあります。
数値は囲まずにそのまま使用します。

ということで、下記のように修正するといいでしょう。

    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

余裕があるなら、下記のページを参照して学習しておくと理解が深まると思います。

Access上のコード内で引用符(
掲示板での質問中のコードで、引用符(
fc2

2
きのこ 2019/08/29 (木) 16:04:22 ba9ae@55860

ありがとうございます!
うまくいきました!

どうやら「#」だと日付だと認識するらしい、とまでは気付いたものの、テキスト型で正しい、と思い込んでいたので「*」に変えてみたり、いろいろ見当違いなことをやってしまっていました。
教えてくださったように記述して、抽出結果が出た時には感動しました。

リンクしていただいたhatenaさんのサイト、お気に入りに追加しました。
勉強させていただきます。

職場で図面の登録・検索システムを作らねばならず、五十の手習いでネットや本でで調べたりコピペしたり四苦八苦していましたが、おかげさまで今回一気に進みました。
いつか私も他人様に教えられるくらいになりたいです。