2つの条件に合うレコードを抽出するには?

解決


manabu  2005-06-02 12:45:31  No: 122159

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


LESIA  2005-06-02 13:12:29  No: 122160

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


魔界の仮面弁士  2005-06-02 18:22:56  No: 122161

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


manabu  2005-06-02 18:51:10  No: 122162

さっそくの回答ありがとうございます。うまく結果を出すことができました。
また困ったときお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加