vb6.0 access使用してます。レコードの各フィールドに条件をつけて抽出したいのですが、なかなか思いつきません。どうすればいいのですか。今は年月日のフィールドにtext3.textのフィルターをしています。これに図書名のフィルードのtext6.textのフィルターを付け加えたいのです。要するに2つの条件が合うレコードの抽出がしたいのです。
現在の内容を下記に残します。
cn.Open
Set rst = New ADODB.Recordset
rst.Source = "記録"
rst.ActiveConnection = cn
rst.CursorType = adOpenStatic
rst.Open
With rst
.Filter = "年月日 like '*" & Text3.Text & "*'"
.MoveFirst
Do While Not .EOF
Text4.Text = Text4.Text & vbCrLf & rst!年月日 & " : " & rst!発行所 & " 図書名 : " & rst!図書名 & " 単価 : " & rst!単価 & " 冊数 : " & rst!冊数 & " 金額 : " & rst!金額
.MoveNext
Loop
.Filter = adFilterNone
End With
rst.Close
cn.Close
Set rst = Nothing
Set cn = Nothing
Filterを使わずに、SQLのWHERE句で指定するのはダメですか?
cn.Open
Set rst = New ADODB.Recordset
rst.Source = "SELECT * FROM 記録 WHERE " & _
"年月日 like '*" & Text3.Text & "*' " & _
"AND 図書名 like '*" & Text6.Text & "*'"
rst.ActiveConnection = cn
rst.CursorType = adOpenStatic
rst.Open
With rst
.MoveFirst
Do Until .EOF
Text4.Text = Text4.Text & vbCrLf & _
rst!年月日 & _
" : " & rst!発行所 & _
" 図書名 : " & rst!図書名 & _
" 単価 : " & rst!単価 & _
" 冊数 : " & rst!冊数 & _
" 金額 : " & rst!金額
.MoveNext
Loop
End With
rst.Close
cn.Close
Set rst = Nothing
Set cn = Nothing
Filterプロパティは、AND/OR条件で指定すればよいのでは?
たとえば、
.Filter = "LastName = 'Smith' AND FirstName = 'John'"
とか
.Filter = "LastName = 'Smith' OR LastName = 'Jones'"
のような指定も、サポートされていますよね。
もし、Filter結果にさらにFilterをかけたいのであれば、
このような方法もありますけど。
'条件設定
RS1.Filter = 条件1
'Streamオブジェクトを生成
Set Stm = New ADODB.Stream
Stm.Type = adTypeBinary
Stm.Open
'Filter結果をStreamオブジェクトに保存
RS1.Save Stm, adPersistADTG
'Streamオブジェクトを、別のRecordsetで開く
Set RS2 = New ADODB.Recordset
RS2.Open Stm
'別の条件を追加設定
RS2.Filter = 条件2
さっそくの回答ありがとうございます。うまく結果を出すことができました。
また困ったときお願いします。
ツイート | ![]() |