• 締切済み

AND検索

アクセスでフォームを作成し、入力項目を5箇所用意しました。 その入力項目によって、OR検索とAND検索を行わせたいと思っています。 OR検索に関しては問題無いのですが、AND検索をさせた場合、5箇所全てを埋めないと結果が得られません。 AND検索で5項目の内3項目が空でも残りの2項目が該当すればデータを表示させたいのですが、方法がわかりません。 アクセス2000を使っています。 よろしくお願いいたします。

みんなの回答

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 VBAを使えば出来ますが。 検索対象のテーブルのレコードセットを作り、Findの条件に、項目が空でないなら、 " AND (フィールド名 = " & 条件 & ")" をくっ付けていけばいいでしょう。 では。

amateur3
質問者

補足

早速の回答ありがとうございます。 アクセスの初心者なので、レコードセットという言葉さえよく知りませんでした。 調べながらなんとかやっていこうと思います。

すると、全ての回答が全文表示されます。
回答No.1

御疲れ様です VBAで宜しければ、こんな感じになります Private Sub コマンド0_Click() Dim stFormName As String Dim stWhere As String stFormName = "AAA" stWhere = 条件文作成("AND") DoCmd.OpenForm stFormName, , , stWhere End Sub Private Function 条件文作成(stConnector As String) As String Dim stSQL As String stSQL = "" stConnector = " " & Trim(stConnector) & " " If IsNull(Me.Txt条件01.Value) = False Then If stSQL <> "" Then stSQL = stSQL & stConnector stSQL = stSQL & "(項目01 = " & Me.Txt条件01.Value & ")" End If If IsNull(Me.Txt条件02.Value) = False Then If stSQL <> "" Then stSQL = stSQL & stConnector stSQL = stSQL & "(項目02 = '" & Me.Txt条件02.Value & "')" End If If IsNull(Me.Txt条件03.Value) = False Then If stSQL <> "" Then stSQL = stSQL & stConnector stSQL = stSQL & "(項目03 = #" & Format(Me.Txt条件03.Value,"mm/dd/yyyy") & "#)" End If If IsNull(Me.Txt条件03.Value) = False Then If stSQL <> "" Then stSQL = stSQL & stConnector stSQL = stSQL & "(項目04 = '" & Me.Txt条件04.Value & "')" End If If IsNull(Me.Txt条件03.Value) = False Then If stSQL <> "" Then stSQL = stSQL & stConnector stSQL = stSQL & "(項目05 = " & Me.Txt条件05.Value & ")" End If If stSQL <> "" Then stSQL = "(" & stSQL & ")" 条件文作成 = stSQL End Function

amateur3
質問者

補足

早速の回答ありがとうございます。 現在テストしているのですが、まだ上手くはいってません。 stWhereの返り値まではきちんと動いているので、何とか解決したいと思います。 なにぶん初心者なものなので、基本的なミスをしてる気がします。

すると、全ての回答が全文表示されます。