|    | 
     おはようございます。 
 
前回、私が投稿した 
 
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でも同じ要領で試してみては? 
 
 | 
     
    
   |