• ベストアンサー

Access2000のクエリー抽出条件

Access2000で、「メインフォーム」の中に「サブフォーム」を作り、「メインフォーム」上の複数のテキストボックス(非連結)の条件により「サブフォーム」内のデータシート形式の「一覧表」にフィルタをかけて表示させたい。 「サブフォーム」のコントロールソースである「選択クエリー」の抽出条件に「メインフォーム」上のテキストボックスの内容を記入してできるかと試みていますが・・・。意図としては条件が複数になると、その分だけ絞り込んだ表示結果を得たいのですが、うまくいきません。 どなたか、教えていただけないでしょうか?

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

複数ある場合の方法です クエリの抽出条件に、それぞれ =Forms![メインフォーム名]![テキストボックスn] or Forms![メインフォーム名]![テキストボックスn] is null この方法は非常に簡単なんですが クエリデザインビューを一度閉じて開きなおすと 別のものに書き換えられてしまうという問題点があります デバッグはクエリを閉じないで デザインビューとデータシートビューを往復する形で行なってください また複数がどの程度か分かりませんが 数が多くなるととんでもないものに書き換えられてしまいますから デバッグ完了後はSQLビューにして保存するようにしてください

hamham91
質問者

お礼

ありがとうございます。 早速、試してみることにします。

その他の回答 (2)

noname#79209
noname#79209
回答No.2

選択クエリを作らずに、フォームのテキストボックスの入力状態に従ったSQLを サブフォームのコントロールソースに代入するプロシージャをコマンドボタンの クリックイベントなどに作成したらいかがでしょう。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

クエリの抽出条件に =[FORM]![メインフォーム名]![テキストボックス名] を記述します。複数あれば複数のフィールドの抽出条件に各抽出条件を入れるテキストボックス名を指定して同様に記述して最後の抽出条件をいれた後にサブフォームのソースのクエリをRequeryすればうまくいくと思いますが。 Requeryメソッドを使えば抽出条件を使って再クエリします。ヘルプなどを参照してください。 ただ複数抽出条件があった場合、入力がされていないテキストボックスがあると抽出できません。 抽出条件は全て必ず入力されるという前提なら上記でいけると思います。 テキストボックスに入力されない場合もあるようだとまた別のやり方になってしまいます。

hamham91
質問者

補足

ご回答ありがとうございます。実は説明不足だったのですが、”複数抽出条件があった場合、入力がされていないテキストボックスがあると抽出できません”とご指摘の通りの状況で困っています。その方法を教えていただけないでしょうか?よろしくお願いします。

関連するQ&A

  • サブフォームを利用したクエリーの抽出条件について

    環境:ACCESS2003&XP Pro メインフォーム&サブフォームのフォームを作成しています。 このサブフォームにテキストボックスをつけ、このテキストボックスの値を抽出条件にしたクエリーを作成しましたが、抽出条件がうまくいかないようで クエリー実行時にパラメータを聞いてきます。 クエリーの抽出条件は forms![メインフォーム名].[サブフォーム名].[テキストボックス名] です。 上記の書き方がおかしいのだと思います。 よろしくお願いします。

  • ACCESS 選択クエリーの抽出条件について

    既出でしたら、大変申し訳ありません。 選択クエリーの抽出条件をフォーム上テキストボックスに入力した 値で行いたいと思います。 対象の項目は商品コードであり、テキスト型です。 フォーム上のテキストボックスに、1111 と入力し、 クエリーの実行をしたところ、正常に抽出。 しかし、フォーム上のテキストボックスに、"1111" or "2222"と 複数の商品を抽出したいので入力した場合、結果が出ませんでした。 おそらく、"1111" or "2222"の記述に問題があるのだと思い、 何パタンか挑戦しましたが、結果バツ。 どなたかお分かりになる方いらっしゃいますか? つたない文章で申し訳ありません。

  • Accessのクエリ

    初めまして。Accessのクエリについての質問です。 Access2003を使っています。 検索フォームを作り、その検索フォームにテキストボックスを2つ作り、そのテキストボックスに検索したい言葉を入力し、コマンドボタンで作った検索ボタンを押すとマクロでフィルタの実行がされデータを抽出できるというものを作りました。フィルタには選択クエリを使用しています。抽出したい2つのフィールドの抽出条件にあいまい条件のLike "*" & [Forms]![フォーム名]![テキストボックス名] & "*"を入れています。 今はテキストボックスが2つですが、もっと増やしていろんな条件で検索出来るようにしたいので、3つ目のテキストボックスを作り、抽出条件も同じように入れました。ですが、そうすると今までちゃんとできていた最初の2つのテキストボックスによる抽出が違った結果となりでてきました。このとき、新しく作った3つ目のテキストボックスは空欄なので最初と同じ結果が出ると思ったのですが、これは抽出条件が3つはできないということでしょうか?どなたか教えてください。

  • ACCESSクエリ抽出条件について

    フォーム画面のリストボックスで複数選択が出来るよう設定し、その結果をクエリの抽出条件で forms![フォーム名].[リストボックス名] としたのですが全く反映されません。 複数選択が出来ないようにしたら問題なく表示されるのですが、上記の記述以外に入力しないといけないのでしょうか?

  • フォームからクエリの抽出条件を入力する方法

    既存のデータベースより複数のテーブルを結合し、必要なカラムだけを表示させるようなクエリを作成しました。 他の人でも操作ができるように、フォームを作成し、テキストボックスにて抽出条件を指定し、クエリやレポートを出力するような形にしたいと思っています。 このクエリの抽出条件をフォームより指定する方法で悩んでいます。 現在、作成したクエリの抽出条件の中に [Forms]![フォーム名]![テキストボックス名] と入力し、フォームのテキストボックスで抽出条件を記入してクエリを実行させているのですが、これでは複雑な条件 (Between~ や 条件1 or 条件2 等の指定) を入れると「直前の操作はキャンセルされました」とポップアップが出てしまい、思うとおりにうごきません。 フォーム内でこのような抽出条件範囲の指定ができるようにするにはどうしたらよろしいでしょうか? よろしくおねがいします。

  • ACCESS クエリの抽出条件

    毎度お世話になります。 クエリをレコードソースとするフォームから、コマンドボタンでアクションクエリを実行するときの抽出条件の書き方を教えて頂けないでしょうか? 二つのテーブル(別のACCESSファイルからリンク)を基にパラメータクエリを作っています。 そのクエリを基にフォームを作っています。 さらに、そのフォームに追加クエリを実行するボタンを置いています。 フォームに表示してあるレコードだけ(パラメータで抽出されたレコードだけ)、他のテーブルに追加しようと思っているのですが、実行ボタンを押すともう一度パラメータが出てきてしまいます。 多分テキストボックスの値を読み取る際にレコードソースがテーブルでないのが問題じゃないかと思うのですが。。。 テーブル:Container / Items クエリ:From_Con(パラメータは[Container]フィールド) フォーム:From_Con(テキストボックス名は[txtContainer]) 追加クエリ:From_Con_App(抽出条件は[Forms]![From_Con]![txtContainer]としてみたがうまく動きません。) デザインビューの抽出条件を使う方法? SQLを使う方法? QueryDefを使う方法? いろいろありそうですが、ネットで検索してもヒットしません。 分かりにくい説明で申し訳ありませんがご教授願います。

  • Access2003 テキストボックスの値によるクエリの抽出条件

    コマンドボタンによるクエリの実行と、直接クエリを実行する(マウスでクリック) するのとで、動作が変わってしまいます。 F_メインメニュー(フォーム)内の非連結のテキストボックスtext1に文字列を入力し、 その隣に配置した検索ボタンを押すことで、テキストボックスの値を含む住所を 抽出するよう、Q_顧客を作成したのですが、F_メインメニュー内にある テキストボックスに文字列を入れ、F_メインメニューを開いたまま 直接、Q_顧客をマウスクリックにより実行すると、 確かに該当する値を含む住所をもつレコードのみがヒットします。 しかし、テキストボックスの横に配置した、コマンドボタンによる クエリの実行をすると、条件抽出されず、全件ヒットしてしまいます。 直接、Q_顧客をマウスによってクリック実行するとできるのに、 なぜコマンドボタンにコマンドボタンがクリックされたらQ_顧客を実行するよう ウィザードで作ると同じ動作にならないんでしょうか? コマンドボタンにはクリックされたらQ_顧客を実行するようにウィザードで 作成しています。 ご教授よろしくお願いします。 **以下作成状況** 「フォーム名」: F_メインメニュー ※このF_メインメニュー内に非連結のテキストボックスtext1を作成。 テキストボックスの横に検索ボタン(コマンドボタン)を作成し、 検索ボタンをクリックしたら、以下のQ_顧客を実行するよう、 コマンドボタンをウィザードで作成。 「テーブル名」: T_顧客 ※フィールドに「住所」あり。 「クエリ名」: Q_顧客 ※ ウィザードでT_顧客からクエリを作成(この時点では抽出条件設定なし) クエリの抽出条件で フィールド:住所 の抽出条件に以下を設定 Like "*" & [Forms]![F_メインメニュー]![text1].[Text] & "*"

  • サブフォーム内の再クエリー

    メインフォームに仕入先コードのコントロールを配置し、サブフォームに商品コードがあります。 メインフォームの仕入先コード(コンボボックス)を選択した時に、サブフォームの商品コード (コンボボックス)に表示される商品を指定した仕入れ先の商品のみ抽出する為に 仕入先コードの更新後処理に再クエリを実行しているのですがサブフォーム内の商品コードが 更新されません。 再クエリのコントロールとして、サブフォームを指定してみましたが、やはり駄目でした。 どのように指定すれば、意図した動きになるのか、お分かりになる方がいましたら、 ご教授の程、お願いします。

  • Access2007が強制終了する事象について

    お世話になります。 表題の件についてですが、現在Windows7 Pro SP1でAccess2007を使用し、ファイル形式は".accdb"でAccessシステムを開発しております。 そのシステムの中に下記の仕組みがあります。 ・F_メインフォーム内にタブコントロールが1つあり、ページ数は7ページで1ページにサブフォームを3つずつ配置し、合計21のサブフォームを設置。 ・1ページに3つずつあるサブフォームの内、各1つのサブフォームのコントロールソースには"T_マス タ"テーブルをもとに作成したクエリをそれぞれ設定。 イメージ) サブフォーム1:コントロールソース⇒Q_クエリ1(特定した日付でT_マスタから抽出) サブフォーム2:コントロールソース⇒Q_クエリ2(特定した日付でT_マスタから抽出) サブフォーム3:コントロールソース⇒Q_クエリ3(特定した日付でT_マスタから抽出) サブフォーム4:コントロールソース⇒Q_クエリ4(特定した日付でT_マスタから抽出) サブフォーム5:コントロールソース⇒Q_クエリ5(特定した日付でT_マスタから抽出) サブフォーム6:コントロールソース⇒Q_クエリ6(特定した日付でT_マスタから抽出) サブフォーム7:コントロールソース⇒Q_クエリ7(特定した日付でT_マスタから抽出) ・F_メインフォームを開くと、各サブフォームの複数のテキストボックスなどにクエリに沿ったレコードが表示されており、その各テキストボックスのコントロールソースにはQ_クエリのフィールド(T_マスタ)を設定しているため、データの直接修正を可能としています。 このような仕組みを構築し、実際にF_メインフォームを開き、テキストボックスなどに表示されているデータに「修正を加えたとき」又は、修正後、F_メインフォームを「閉じたとき」に、Microsoft Accessは動作を停止しましたの表示から、強制終了して落ちてしまいます。。。 この原因ですが、いくらクエリを使用していても、複数のサブフォームに一つのテーブルを使用して、データを直接更新したりするのはまずいのでしょうか? この問題が解決できずに今、本当に困っています。。。 どなたか詳しい方、ご教授をよろしくお願い致します・・

  • (access )任意の数字以上でクエリ抽出したい

    フォーム上にテキストボックスと、サブフォームのクエリを配置しております テキストボックス(textbox1)に数字を入力し、その数字以上のフィールドを抽出したいのですが、上手く行きません 現在クエリの抽出条件に以下の式を入力していますが、レコードが一切表示されません。 (抽出はできますが) >=([Forms]![フォーム名]![textbox1]) どなたかご教授お願い致します