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

A 回答 (2件)

こんにちは。

maruru01です。

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

この回答への補足

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

補足日時:2002/02/27 10:01
    • good
    • 0

御疲れ様です



VBAで宜しければ、こんな感じになります



Private Sub コマンド0_Click()
Dim stFormNameAs String
Dim stWhereAs String

stFormName = "AAA"
stWhere = 条件文作成("AND")
DoCmd.OpenForm stFormName, , , stWhere

End Sub



Private Function 条件文作成(stConnector As String) As String
Dim stSQLAs 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

この回答への補足

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

補足日時:2002/02/27 09:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ