• ベストアンサー

AccessのフォームでAND検索

Accessで今、土地物件を検索するものを作っています。 物件はテーブルに200件くらいあります。 そのテーブルのフィールドに「土地面積(坪)」と「価格」いう名前のフィールドがあるのですが、この2つは【○○~○○】という具合にフォームでボタンを押せば範囲検索が出来るようになっています。 だけど、OR条件になってしまいます。 出来れば、それをAND条件で検索できる様にしたいのです。 ソースは今このようになっています↓↓ テキスト:「tubo1」「tubo2」「kakaku1」「kakaku2」 Private Sub コマンド55_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("物件情報", dbOpenDynaset) If tubo1 <> "" Then If tubo2 <> "" Then    rs.Filter = "[土地面積(坪)] >=" & tubo1 & " And [土地面積(坪)] <=" & tubo2 Else rs.Filter = "[土地面積(坪)] =" & tubo1 End If If kin1 <> "" Then If kin2 <> "" Then rs.Filter = "[価格] >=" & kakaku1 & " And [価格] <=" & kakaku2 Else rs.Filter = "[価格] =" & kakaku1 End If End If End If Set rs = rs.OpenRecordset Set Me.Recordset = rs Me.Requery Set rs = Nothing Set db = Nothing End Sub です。宜しくお願い致します。 ちなみにAccess2007です。

質問者が選んだベストアンサー

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

条件が上書きされてますね。下記のようにすれば良いのでは? Private Sub コマンド55_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim rsf1,rsf2 As String Set db = CurrentDb Set rs = db.OpenRecordset("物件情報", dbOpenDynaset) If tubo1 <> "" Then If tubo2 <> "" Then    rsf1 = "[土地面積(坪)] >=" & tubo1 & " And [土地面積(坪)] <=" & tubo2 Else rsf1 = "[土地面積(坪)] =" & tubo1 End If If kin1 <> "" Then If kin2 <> "" Then rsf2 = "[価格] >=" & kakaku1 & " And [価格] <=" & kakaku2 Else rsf2 = "[価格] =" & kakaku1 End If End If End If If rsf1 <> "" And rsf2 <> "" Then  rs.Filter = rsf1 & " And " & rsf2 '両方に条件がある場合 Else rs.Filter = rsf1 & rsf2 '片方に条件がない場合 End If Set rs = rs.OpenRecordset Set Me.Recordset = rs Me.Requery Set rs = Nothing Set db = Nothing End Sub

minnie1015
質問者

お礼

アドバイスありがとうございます! 試してみたいと思います。

その他の回答 (1)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

OR条件にもなっていませんよ どっちか片方だけですね というかkakakuが入力されればtuboは無視されますね (価格のほうで書き換えてしまっています) 坪のほうをfilter1、価格のほうをfilter2とでもして filter="(" & filter1 & ") and (" & filter2 & ")" のように連結しなきゃ

minnie1015
質問者

お礼

アドバイスをありがとうございます! さっそく試してみます。

関連するQ&A