Accessで複数条件の検索フォームを作りたい

Anonymous
2019-05-23T09:05:04+00:00

分割フォームでキーワード検索を複数の条件で抽出したいです。

現在、メンテナンスの作業履歴のテーブルから、下記のような、フィルターは作動しました。

しかし検索がそれぞれ独立した内容になっています。

これを、ひとつの検索ボタンで、それぞれの項目を入力した際のAND検索、に変更したいです。

(記入しなかった場合はその項目は無視する)

ご助言の程よろしくお願い致します。

'ベッドNoの一致検索

Private Sub cmd_bedno_click()

    Me.Filter = "ベッドNo ='" & Me!ベッドNo検索 & "'"

    Me.FilterOn = True

End Sub

'点検内容のあいまい抽出

Private Sub cmd_naiyou_Click()

    Me.Filter = "点検内容 Like '*" & Me!点検内容検索 & "*'"

    Me.FilterOn = True

End Sub

'作業日の範囲検索

Private Sub cmd_day_Click()

    Me.Filter = "作業日 Between #" & Me!作業日検索1 & "# AND #" & Me!作業日検索2 & "#"

    Me.FilterOn = True

End Sub

'FilterOnプロパティをFalseにすると解除できます。

Private Sub cmd_reset_Click()

    Me.FilterOn = False

End Sub

※変更後イメージ

このような複数検索可能にして絞込み検索できるようにしたいです。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

3 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2019-05-27T04:04:31+00:00

    sk.exe さん、いつもアドバイスありがとうございます。

    CEAKISHIMA CL さん、こんにちは。

    マイクロソフト コミュニティへの投稿ありがとうございます。

    問題が解消されたようで良かったです。

    同じような問題に遭遇された方がこちらのスレッドを参考にしていただけるよう、問題解決の役に立ったコメントに [回答としてマーク] をつけていただけると幸いです。

    今後もお困りのことなどあれば、またお気軽にマイクロソフト コミュニティをご利用くださいね。

    ※ なお、マイクロソフト コミュニティは一般ユーザー向けフォーラムなので、VBA コードの質問については専用トピックのある開発者向けの「MSDN フォーラム」で質問された方が情報が集まりやすい場合もありますので、よければそちらもご活用くださいね。

    この回答は役に立ちましたか?

    5 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. Anonymous
    2019-05-24T01:40:57+00:00

    > 分割フォームでキーワード検索を複数の条件で抽出したいです。

    > ひとつの検索ボタンで、それぞれの項目を入力した際の

    > AND検索、に変更したいです。

    > (記入しなかった場合はその項目は無視する)

    とりあえず、[標題]プロパティの値が「抽出」である

    コマンドボタンの名前が[cmd_filter]であると仮定した場合。

    (フォームモジュール)


    'コマンドボタン[cmd_filter]の[クリック時]イベント

    Private Sub cmd_filter_Click()

        Dim strFilter As String

        '[ベッドNo]の条件の指定

        If Nz(Me![ベッドNo検索], "") <> "" Then

            strFilter = strFilter & _

                        " AND ([ベッドNo] = '" & Replace(Me![ベッドNo検索], "'", "''", , , vbBinaryCompare) & "')"

        End If

        '[点検内容]の条件の指定

        If Nz(Me![点検内容検索], "") <> "" Then

            strFilter = strFilter & _

                        " AND ([点検内容] Like '*" & Replace(Me![点検内容検索], "'", "''", , , vbBinaryCompare) & "*')"

        End If

        '[作業日]の範囲条件(最小値)の指定

        If IsDate(Me![作業日検索1]) Then

            strFilter = strFilter & _

                        " AND ([作業日] >= #" & Format(Me![作業日検索1], "yyyy/mm/dd") & "#)"

        End If

        '[作業日]の範囲条件(最大値)の指定

        If IsDate(Me![作業日検索2]) Then

            strFilter = strFilter & _

                        " AND ([作業日] <= #" & Format(Me![作業日検索2], "yyyy/mm/dd") & "#)"

        End If

        '先頭の" AND "を取り除く

        strFilter = Mid(strFilter, 6)

        'フィルター条件の設定

        Me.Filter = strFilter

        'フィルターの実行 (もしくは解除)

        Me.FilterOn = (strFilter <> "")

    End Sub


    以上のようなイベントプロシージャを追加なさればよろしいかと。

    この回答は役に立ちましたか?

    5 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  3. Anonymous
    2019-05-25T01:35:48+00:00

    sk.exeさん、ありがとうございます!

    説明も入れて頂きとても助かりました!

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません