• ベストアンサー

ACCESS 期間とあいまい検索について

クエリの抽出条件にBetweenn関数とLike関数を使うことは不可能なのでしょうか? テーブルは 部品番号 区分 処理日 となっています。 部品番号と区分はあいまい検索を行い、処理日は範囲を指定して検索したいと思っています。 検索方法は部品番号のみの場合や、部品番号と処理日で複数条件を指定できるようにしたいです。 できればクエリで処理をしたいのですが、方法があれば教えてください。 宜しくお願いします。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1416)
回答No.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)
回答No.1

検索条件が動的に変化するので、固定的なクエリで処理することは できません。 「処理」が何なのか分かりませんが、フォームやレポート、あるいは レコードセットの処理なら、動的なSQL構築で対応すれば簡単ですよ。 Dim SQL As String SQL = "SELECT * FROM クエリ" 以下、条件により、変数SQLに条件句を継ぎ足していきます。

H-SYS-03
質問者

補足

回答ありがとうございます。 SQL構築を詳しく教えていただけないでしょうか? フォーム上にデータの一覧が表示され、テキストボックスorコンボボックスから検索項目を選び、検索ボタンを押すと、抽出された結果が同フォームに表示されるようにできればと思っています。 宜しくお願いします。

関連するQ&A