• ベストアンサー

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

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

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

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

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

H-SYS-03
質問者

補足

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

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

関連するQ&A

  • access あ~おを検索したい

    図のようにテーブルのデータのあ~おを検索したいのですがヒットしません。 クエリでlikeを使って条件抽出する場合は[あ-お]でヒットするのに テーブルに対してはだめなのでしょうか? [あーお] [あ-お] でもだめでした。 よろしくお願い致します。

  • ACCESS2003 複数のあいまい検索

    あいまい検索を複数の条件を組み合わせる方法について質問です。 ======================== (テーブル) [ID]  [クラス]  [名前]  1     A     野村    2     B     鈴木    3     A     小笠原    4     B     森     5     C     吉田   6     B     青山    7     C     山田      8     A     川野    ======================== ☆上記のテーブルから、[名前]に「田」または「野」または「木」が 含まれるレコードの抽出をする。 ======================= [抽出結果] [ID]  [クラス]  [名前]  1     A     野村    2     B     鈴木      5     C     吉田   7     C     山田      8     A     川野    ======================== Like '*田*' mLike '*野*' 、Like '*木*' のような関数を使うと思うのですが、 複数条件を組み合わせて、1つのクエリで実行できる方法を教えてください。 お手数お掛けしますが、宜しくお願い致します。

  • access2003で軽快な検索クエリを作るには?

    access2003で検索フォームを作成しています。 リレーションの結ばれた複数のテーブルを対象に、検索語句による検索をしようとクエリを作っています。 基本となるテーブルには数値(ID)が中心となっており、それらの実際の値をDlookUpで参照して結果を作っています。 この際に、DlookUpで指定した参照元について抽出条件を設定すると異様に時間が掛かり、実用的ではなくなってしまいました。 テーブルの構成上、DlookUpを使わざるを得ないので、その参照元も含めて検索語句で抽出できるようにしたいのですが、 どのようにすればレスポンスの良い検索クエリができますでしょうか。

  • ACCESSで「"」を検索する

    テーブルデータの中に「"」を文字として使用している場合 クエリーで抽出条件に「"」を入れて検索しようとすると 指定した式に不正な文字が含まれています と出て検索できずに困っています どうにか「"」を含むデータを検索できないでしょうか ちなみにACCESS97です

  • Access2000で複数の検索項目を作りたいのですが・・・

    こんにちわ。 今、Accessで社員録を作成しているんですが、複数の検索について教えて下さい。 ■テーブル テーブル名:社員録 フィールド名:ID・検索名・氏名・所属ID・所属 ■クエリ クエリ名:社員録クエリ フィールド名:ID・検索名・氏名・所属ID・所属 検索名抽出条件:検索名フィールド: Like [Forms]![社員録 縦]![けんさく]         所属フィールド: Like [Forms]![社員録 縦]![抽出検索名] ■フォーム フォーム名:社員録フォーム:テキスト1・テキスト2・ボタン1       社員録サブフォーム:データソース:社員録クエリ テキスト1:所属を入力 テキスト2:検索名を入力 ボタン1:マクロの再クエリを実行する ■ここからが質問です■ (1)テキスト1又は、2が空白のとき社員録全体から検索かフィルタ。 (2)テキスト1・2が、入力されてる時、両条件から検索かフィルタ。 をしたいのですが、何かいい方法がありましたら教えて下さい。 説明が、長くなってしまってスミマセン。。。

  • Access、検索用フォームでのあいまいな検索

    現在、Accessでデータベース作成をしています。 テーブル:  ・テーブルA          ・テーブルB          (A・B間にリレーションシップ設定) クエリ    ・検索クエリ(テーブルA・テーブルBを元に作成) フォーム   ・検索用フォーム(デザインビューでフォーム作成より)          ・検索結果フォーム(検索クエリを元に作成) また、以下のような設定を入力しました。 「検索クエリ」の抽出欄  Like "*" & [Forms]![検索用フォーム]![検索したい名前] & "*"・・(1)  ※検索したい項目、すべての抽出欄に設定済 「検索用フォーム」  検索実行ボタンを作成し、マクロを設定  ・フォームを開く→「検索結果フォーム」  ・フィルタ→「検索クエリ」 上記の設定により、検索用フォームに検索文字を入力することで、その結果を「検索結果フォーム」に反映することができました。 ただ、テーブルAが元になっている項目の抽出欄のみに(1)を入力すると、うまくいくのですが、テーブルBが元になっている項目欄にも (1)を入力しようとすると、検索用フォームからうまく検索することができなくなります。 2つのテーブルを元にしたクエリからは、検索用フォームをつかった複数のOR検索はできないのでしょうか?? ご存知の方、ぜひ教えてください。 よろしくお願いいたします。

  • ACCESS2000のクエリでワイルドカード検索したい

    ACCESS2000のクエリでフォームで入力した内容でワイルドカード検索しようと抽出条件に Like "|Forms![フォーム名]![フィールド名]|*"と指定しましたが、上手くいきません。 ACCESS2.0では、これで上手くいったのですがACCESS2000 では指定の仕方が違うのでしょうか? どなたか教えて下さい。

  • Accessの検索フォームで。

    Accessを使ってデータベースを作成しています。 「テーブル1」があり、これには 名前ID 名前 入力日 チェック項目1 チェック項目2   : とあります。 これをもとに「検索クエリ」を作成しました。 検索クエリの項目は「テーブル1」とまったく同じですが、 すべてを検索するわけではないので ・名前ID  「検索項目なし」 ・名前  「Like IIf(IsNull([Forms]![検索条件入力フォーム]![名前]),[氏名],'*' & [Forms]![検索条件入力フォーム]![名前] & '*') ・入力日  「検索項目なし」 ・チェック項目1  「Like IIf(IsNull([Forms]![検索条件入力フォーム]![チェック項目1]),[チェック項目1],[Forms]![検索条件入力フォーム]![チェック項目1])」 ・チェック項目2  ※上記と同じ。   : としてあります。 この「検索クエリ」をもとに「検索条件入力フォーム」を作成してあります。 名前の欄に「田中」と入力すれば、「田中」がつく人がすべて検索されるというようなカンジになっています。 「テーブル1」に空欄があり、その場合に、検索がうまくいきません。 「検索クエリ」のところですべてに条件を入れればいいのですが、フォームに全てが入っていないので。。。 やはりフォームに「テーブル1」の項目すべてを含め、クエリで条件を入れるべきでしょうか? これが今考えている中では一番手早いようなカンジがするのですが、どうしてもあまりスマートなやり方ではないような気がして。。。 これしかないのであれば、これでやりますが、他にいい方法があれば、教えていただけないでしょうか? あまり上手な文章ではないので、補足要求があれば補足します。 宜しくお願いします。 Ac2000です。

  • Accessで「キーワード検索」をしたい

    前任者が作ったデータベースを触っています。 私自身はAccessの基本操作がわかるくらいでVBAとかはよくわかりません。 今回その修正がしたいと思っています。 検索用フォームがあり、現在3つのコンボボックスがあってそれを選択して 「検索開始」をしています。 今回、その検索用フォームに「キーワード検索」というテキストボックスを1つ追加したいです。 検索の対応となるフィールドは2つあります。 「質問」「回答」 このどちらかのフィールドに「キーワード検索」した文字があればレコードを抽出してほしいです。 とりあえず検索結果を表示するためのクエリの「質問」「回答」の抽出条件に同様に Like "*" & [Forms]![F_検索フォーム]![キーワード] & "*"と入れてみました。 なんとなく違う気はするのですが、どうやってやれば良いのかイマイチわかりません。 またこの同じクエリに IIf(IsNull([Forms]![F_検索フォーム]![区分1cd]),True,[区分1cd]=[Forms]![F_検索フォーム]![区分1cd]) 抽出条件欄に「True」 これが3つのコンボボックス分あります。 何のためのフィールドでしょうか? また、私が追加する「キーワード検索」テキストボックスの分も作らないといけないものでしょうか? 素人質問で申し訳ありませんがアドバイスいただけたら助かります。 Accessのテキストは職場にたくさんあるのですが、私のレベルでは読んでも??ばかりです。 よろしくお願いします。

  • accessでパラメータをフォームで指定しテーブルを作成する方法

    ACCESSでFORMをつくり、そこで条件指定(パラメータ指定)してテーブルを作成しようとしています。 実際は2本のテーブル顧客テーブル・売上明細テーブル両方をクエリで関連づけ、そのクエリに抽出条件を入れれば良いと思うのですがうまくいきません。どのように設定したらいいのでしょうか? 条件は売上日付が xxxx~xxxx という期間指定でさらに(必須) 商品分類が YY で区分が zz のもの という条件をFORMで入れるように設定しています 分類と区分は指定無でも可です どうぞよろしくお願いします!