「access ado filter 特定の文字を含む」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
Access VBA(Visual Basic for Applications)で、ADO(ActiveX Data Objects)のRecordset.Filterプロパティを、
使う方法を探している方による検索でしょうか。
「access ado filter 特定の文字を含む」
という検索キーワードだけでは詳細がわかりませんので、簡単なプロシージャを2つご紹介しておきます。
ADODBのRecordset.Filterを使うサンプルプロシージャ
「ID」「名前」「住所」というフィールドを持った、「tbl_住所録」というテーブルが存在するAccessで、以下のプロシージャを実行すると、名前に「藤」という文字の含まれる(例えば、伊藤・加藤・藤井といった)レコードが、イミディエイトウィンドウに出力されます。
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sql As String
Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset
sql = "SELECT ID, 名前, 住所 FROM tbl_住所録 "
rst.Open _
Source:=sql, _
ActiveConnection:=cnn
rst.Filter = "名前 Like '%藤%' "
Do Until rst.EOF
Debug.Print rst!ID, rst!名前, rst!住所
rst.MoveNext
Loop
rst.Close: Set rst = Nothing
cnn.Close: Set cnn = Nothing
基本構造は、ご紹介済みの全レコードを取得するプロシージャと同じです。
違うのは、Do~Loop文に入る直前の、
rst.Filter = "名前 Like '%藤%' "
です。
この行が、RecordsetオブジェクトのFilterプロパティを利用している箇所です。
Recordset.FilterでLike条件を指定するためのワイルドカードは、「*」(アスタリスク)も「%」(パーセント)も使えるようですが、ADOを使うのなら「%」に慣れておくほうがいいのかな、と感じます。
VBE(Visual Basic Editor)でローカルウィンドウを表示した状態で、ADODB.Recordset型のオブジェクト変数・rstの「Filter」に注意しながらステップ実行して、
rst.Filter = "名前 Like '%藤%' "
を通過すると、下図のようにFilterに文字列が設定されるのを確認しておくことをおすすめします。
ADODBのRecordset.Filterで変数を使って条件指定するサンプルプロシージャ
「access ado filter 特定の文字を含む」
という検索をなさった方のことを想像すると、「特定の文字」を変数に格納しておいてからフィルターする記述に、戸惑う可能性があるような気がします。
そんなサンプルもご紹介しておきます。
以下のプロシージャを実行すると、途中で表示されるInputBoxから指定した文字を含むレコードが、イミディエイトウィンドウに出力されます。
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sql As String
Dim flt As String
Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset
sql = "SELECT ID, 名前, 住所 FROM tbl_住所録 "
rst.Open _
Source:=sql, _
ActiveConnection:=cnn
flt = InputBox("抽出する名前を入力してください。")
rst.Filter = "名前 Like '%" & flt & "%' "
Do Until rst.EOF
Debug.Print rst!ID, rst!名前, rst!住所
rst.MoveNext
Loop
rst.Close: Set rst = Nothing
cnn.Close: Set cnn = Nothing
ポイントはもちろん、
flt = InputBox("抽出する名前を入力してください。")
rst.Filter = "名前 Like '%" & flt & "%' "
の部分です。
- Newer:関数で計算結果のゼロを表示しないように
- Older:FIND関数で後ろ・右から文字を探して位置を取得する
Home » Access VBA » Access VBAでADOのRecortset.Filterを利用する