- ベストアンサー
ACCESS 期間とあいまい検索について
クエリの抽出条件にBetweenn関数とLike関数を使うことは不可能なのでしょうか? テーブルは 部品番号 区分 処理日 となっています。 部品番号と区分はあいまい検索を行い、処理日は範囲を指定して検索したいと思っています。 検索方法は部品番号のみの場合や、部品番号と処理日で複数条件を指定できるようにしたいです。 できればクエリで処理をしたいのですが、方法があれば教えてください。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ヒントを書いたんだけどね、オマケは次のような感じ。 Dim SQL As String, WHR As String SQL = "SELECT * FROM クエリ" If 部品番号 <> "" Then WHR = WHR & IIf(WHR = ""," WHERE "," AND ") WHR = WHR & "部品番号 LIKE '" & Replace(部品番号, "'", "''") & "'" End If If 区分 <> "" Then WHR = WHR & IIf(WHR = ""," WHERE "," AND ") WHR = WHR & "区分 LIKE '" & Replace(区分, "'", "''") & "'" End If If 処理開始日 <> "" Then WHR = WHR & IIf(WHR = ""," WHERE "," AND ") WHR = WHR & "処理日" If 処理終了日 = "" Then WHR = WHR & ">=#" & 処理開始日 & "#" Else WHR = WHR & " BETWEEN #" & 処理開始日 & "#" WHR = WHR & " AND #" & 処理終了日 & "#" End If Else If 処理終了日 <> "" Then WHR = WHR & "<=#" & 処理終了日 & "#" End If End If SQL = SQL & WHR 'これでSQL完成 フォーム.RecordSource = SQL '例えばフォームのレコードソースに使う。 実際の変数名にするとか、日付のフォーマッティングは適宜やってね。
その他の回答 (1)
- nda23
- ベストアンサー率54% (777/1416)
検索条件が動的に変化するので、固定的なクエリで処理することは できません。 「処理」が何なのか分かりませんが、フォームやレポート、あるいは レコードセットの処理なら、動的なSQL構築で対応すれば簡単ですよ。 Dim SQL As String SQL = "SELECT * FROM クエリ" 以下、条件により、変数SQLに条件句を継ぎ足していきます。
補足
回答ありがとうございます。 SQL構築を詳しく教えていただけないでしょうか? フォーム上にデータの一覧が表示され、テキストボックスorコンボボックスから検索項目を選び、検索ボタンを押すと、抽出された結果が同フォームに表示されるようにできればと思っています。 宜しくお願いします。