|
おはようございます。
前回、私が投稿した
www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=46362;id=excel
これに文字列フィルタを追加した別解です
(私は、普段は、sql派?なんですが、レコードセットのFilterを使ってみました。
これも簡単で良いですねえ!!)
userform1更にテキストボックス(Textbox3)を追加してください。
sample.mdbのtblsampというテーブルの文字型フィールドである
dbstrの抽出条件入力用です。
Userform1のCommandbutton2のクリックイベントプロシジャーだけ
以下のように変更します。
(他のコードは前回と同じですよ!!要らないわけではありませんから・・)
'===============================================================
Private Sub CommandButton2_Click()
Dim dbpath As String
Dim myRS As Object
dbpath = ThisWorkbook.Path & "\" & flnm
Set myRS = CreateObject("adodb.recordset")
If open_cat(dbpath) = 0 Then
If exe_cmd(myRS, qry_samp, Array(TextBox1.text, TextBox2.text)) = 0 Then
'パラメータクエリの実行
With Worksheets("sheet1")
.Range("f:h").ClearContents
.Range("f1:h1").Value = Array("dbid", "dbdate", "dbstr")
'***********************************************************************
'追加コード
If TextBox3.text <> "" Then
myRS.Filter = "dbstr like '*" & TextBox3.text & "*'"
End If
'***********************************************************************
.Range("f2").CopyFromRecordset myRS
.Range("g:g").NumberFormatLocal = "yyyy/m/d"
End With
myRS.Close
Else
MsgBox "error"
End If
Call close_cat
Else
MsgBox "接続失敗"
End If
Set myRS = Nothing
End Sub
これで前回と同様の操作(コマンドボタン1をクリック)でデータベースサンプル
を作成した後、
Textbox1とTextbox2に日付範囲をYYYY/MM/DD形式で入力
Textbox3にはフィールドdbstr抽出条件を入力してください。
例
Textbox1 2007/1/2
textbox2 2007/1/10
textbox3 B
と入力し、コマンドボタン2をクリックしてください。
抽出結果がF列から、
dbid dbdate dbstr
2 2007/1/3 BBB
のように表示されます。
上記のサンプルで試された後、実際のDBでも同じ要領で試してみては?
|
|