- ベストアンサー
Access2000のクエリー抽出条件
Access2000で、「メインフォーム」の中に「サブフォーム」を作り、「メインフォーム」上の複数のテキストボックス(非連結)の条件により「サブフォーム」内のデータシート形式の「一覧表」にフィルタをかけて表示させたい。 「サブフォーム」のコントロールソースである「選択クエリー」の抽出条件に「メインフォーム」上のテキストボックスの内容を記入してできるかと試みていますが・・・。意図としては条件が複数になると、その分だけ絞り込んだ表示結果を得たいのですが、うまくいきません。 どなたか、教えていただけないでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
複数ある場合の方法です クエリの抽出条件に、それぞれ =Forms![メインフォーム名]![テキストボックスn] or Forms![メインフォーム名]![テキストボックスn] is null この方法は非常に簡単なんですが クエリデザインビューを一度閉じて開きなおすと 別のものに書き換えられてしまうという問題点があります デバッグはクエリを閉じないで デザインビューとデータシートビューを往復する形で行なってください また複数がどの程度か分かりませんが 数が多くなるととんでもないものに書き換えられてしまいますから デバッグ完了後はSQLビューにして保存するようにしてください
その他の回答 (2)
選択クエリを作らずに、フォームのテキストボックスの入力状態に従ったSQLを サブフォームのコントロールソースに代入するプロシージャをコマンドボタンの クリックイベントなどに作成したらいかがでしょう。
- O_cyan
- ベストアンサー率59% (745/1260)
クエリの抽出条件に =[FORM]![メインフォーム名]![テキストボックス名] を記述します。複数あれば複数のフィールドの抽出条件に各抽出条件を入れるテキストボックス名を指定して同様に記述して最後の抽出条件をいれた後にサブフォームのソースのクエリをRequeryすればうまくいくと思いますが。 Requeryメソッドを使えば抽出条件を使って再クエリします。ヘルプなどを参照してください。 ただ複数抽出条件があった場合、入力がされていないテキストボックスがあると抽出できません。 抽出条件は全て必ず入力されるという前提なら上記でいけると思います。 テキストボックスに入力されない場合もあるようだとまた別のやり方になってしまいます。
補足
ご回答ありがとうございます。実は説明不足だったのですが、”複数抽出条件があった場合、入力がされていないテキストボックスがあると抽出できません”とご指摘の通りの状況で困っています。その方法を教えていただけないでしょうか?よろしくお願いします。
お礼
ありがとうございます。 早速、試してみることにします。