【Access】Filterを使って複数条件を抽出する方法
【Access】Filterを使って複数条件を抽出する方法

【Access】Filterを使って複数条件を抽出する方法

  1. HOME >
  2. データベース >

データベース パソコン(ソフト)

【Access】Filterを使って複数条件を抽出する方法

2022年11月9日

マイクロソフトアクセス(以下Access)で帳票フォームから色々な条件で検索したり抽出したりするケースは多いかと思います。

Filter機能を使ってVBAから動かしてみましたが、

ココに注意

1つの項目での抽出はできるのに、複数になるとエラー

になってできなかったので備忘録にすることにしました。

 

目次

Toggle

1つの項目では抽出できる

はじめに、上の画像のように、「確定」という日本語でFilterを掛けて抽出する方法ですが、

Me.Filter = "confirmed = '" & confirmed_select & "'" Me.FilterOn = True

上のようなVBAでちゃんと抽出することは確認できました。

そして、集荷日検索ですが、

Me.Filter = "[pu_date]=#" & Me.pu_date_mado & "#" Me.FilterOn = True

上のようなVBAでちゃんと抽出できることも確認できました。

 

複数抽出にするとエラーが出た!

Me.Filter = "confirmed = '" & confirmed_select & "'" And "[pu_date]=#" & Me.pu_date_mado & "#" Me.FilterOn = True

エラー13の型が違うよってエラーになり抽出することができません。

なぜなのでしょうか?

 

Filter複数抽出する方法

Dim strfilter1 As String Dim strfilter2 As String strfilter1 = "confirmed = '" & confirmed_select & "'" strfilter2 = "[pu_date]=#" & Me.pu_date_mado & "#" Me.Filter = strfilter1 & " And " & strfilter2 Me.FilterOn = True

よくわかりませんが変数をつかってFilterをかけたら期待した結果を抽出することができるようになりました。

今回は、文字と日付の複数条件でしたが、もっと項目が増えたとしても、

参考

strfilter1 & " And " & strfilter2 & "And " & strfilter3 & " And " & strfilter4 & " And " & strfilter5

のようにすれば簡単に複数抽出が可能になると思います。

 

非連結コンボボックス使用時の注意点

2つの非連結コンボボックス[confirmed_select]、[search_mado]があり、どちらかが選択されている場合と、どちらかが選択されていない場合の抽出が必要な場合があります。

コンボボックスの初期値に、Nullや””を設定してみたりしたりしましたが何だかうまく抽出がされません。

そこで下記のようにしたら、うまくいきました。

Private Sub search_mado_AfterUpdate() Dim strfilter1 As String Dim strfilter2 As String If IsNull(confirmed_select) Or confirmed_select = "" Then Me.Filter = "[s_no]= " & search_mado Me.FilterOn = True Else strfilter1 = "confirmed = '" & confirmed_select & "'" strfilter2 = "[s_no]= " & search_mado Me.Filter = strfilter1 & " And " & strfilter2 Me.FilterOn = True End If End Sub

つまり、VBAコードにNullの時と、””(空)の時を設定して、抽出させました。

コンボボックスにて選択されている場合は、ANDで複数条件抽出になりました。

 

 

-データベース, パソコン(ソフト) -データベース, Access, VBA, アクセス, 抽出, Filter, 検索, 帳票フォーム

📎📎📎📎📎📎📎📎📎📎