• 締切済み

サブフォームにクエリの結果を表示するには・・・?

ACCESSで勉強を始めたばかりの者です。 過去ログを検索してもわからなかったので教えてください。 ただ今検索用のテキストボックスを作り、コマンドボタンを押すとクエリが実行されるようになっております。 ここで、クエリの画面を出すのではなくサブフォームを作ってそこに表示させるようにしたいと思ってます。 表示させたい項目はすでに作ってはみたのですが、どうやったらコマンドボタンを押してそこに表示させるようにできるのかがわかりません。 もしかしたら大変未熟な質問をしているかもしれませんが、どうか教えてください。

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.5

原因は未定義の名前を使った場合です。何らかの値を入力すると、 一覧表が表示されることから考えると、[Forms]![A]![B]が間違っていると思います。 [Forms]:この通りに記述してください。 [A]:Aの代わりに単票フォームのフォーム名を指定します。 [B]:Bの代わりに単票フォーム上の検索用テキストボックスのコントロール名を 指定します。 実際にフォームが"検索画面"、テキストボックスが"検索"なら、 [Forms]![検索画面]![検索]となります。 あと、検索ボタンのクリックイベントですが、実効命令は以下が正しい。 Me.xxxx.Form.Requery xxxxは単票フォーム内のサブフォームのコントロール名です。

gaku105
質問者

お礼

ありがとうございます。 色々試しているうちにできました! 原因は帳票フォームのレコードソースの「・・・」のところをクリックしてみたらクエリビルダのフィールドに[検索項目]という言葉があり、これを消してみたらうまくできました。 こんな初心者に丁寧に教えていただき、どうもありがとうございました。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.4

フォームのレコードソース・プロパティです。 プロパティシートの最も上(最初)に出てくるものです。 分類は「データ」です。フォームヘッダや詳細の処をカレントに していると見つかりませんよ。

gaku105
質問者

お礼

何度もすみません。 帳票のほうのレコードソースにコピペしたものを入力し、単票のレコードソースとテキストボックスのコントロールソースが空欄になっていることを確認しました。 ところが、まだ単票のフォームを開くとパラメータ入力のウィンドウが出て、そこで入力するとフォームが開き・・・という一番下に書いたことが繰り返されてしまいます。 他にはどのような原因が考えられるものなのでしょうか? どうぞよろしくお願いいたします。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

サブフォームとはフォーム(X)を別のフォーム(Y)の一部として使うということです。 「サブフォームの修正」とは帳票形式のフォーム(上記X)を別途、 デザインビューで開いて修正することを意味します。 単票形式(上記Y)の方をいくら探しても見つかりません。

gaku105
質問者

お礼

ありがとうございます。 サブフォームとフォームの関係はなんとなくわかりました。 最初の話に戻って申し訳ございませんが、 SELECT * FROM クエリ名 WHERE 検索項目=[Forms]![A]![B] の入力箇所がいまいちよくわからないのですが、どこに入力すればよいのでしょうか? サブフォームをデザインビューで開いても見つけることができませんでした。 よろしくお願いいたします。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

単票の方のフォーム(A)のレコードソースに 何か記述していませんか? このフォームはテーブルとはリンクしない 非連結の状態でなければなりません。 よって、フォームのレコードソース、テキスト ボックスのコントロールソースも空欄でなければ なりません。

gaku105
質問者

お礼

すみません、何度試しても同じ結果となってしまいます。 (3)帳票形式のフォームのレコードソースを以下のように変更 というところをもう少し詳しく教えていただけますか? サブフォームのどこでプロパティを開いたらよいのでしょうか? また、レコードソースという言葉がなかったのですが、違う言葉で書かれてるものなのでしょうか??? 大変恐縮ですが、よろしくお願いいたします。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

幾つかの方法がありますが、以下は一例です。 (1)クエリを元にした帳票形式のフォームを作成 (2)単票形式のフォーム(名前:A)を作り、以下の項目を配置  ア.検索用テキストボックス(名前:B)  イ.コマンドボタン  ウ.サブフォーム(上記の帳票形式フォームを埋め込む。名前:C) (3)帳票形式のフォームのレコードソースを以下のように変更  SELECT * FROM クエリ名 WHERE 検索項目=[Forms]![A]![B] (4)コマンドボタンのクリックイベント・プロシージャに以下を記述  Me.A.Form.Requery

gaku105
質問者

お礼

ありがとうございます。 教えていただいたとおりにやってみてフォームから開いて実行してみたところ、まず「パラメータの入力 検索項目」というのが出てきて、そこで検索したい語句を入れてOKを押すと単票形式のフォーム(名前:A)が出てきて、そこで検索用テキストボックス(名前:B)にもう一度同じ語句を入れるとまた「パラメータの入力 検索項目」が出てきて、もう一度そこに同じ語句を入力するとようやくサブフォームに結果が出てくるという不思議なことになってしまいました。 これは一体どこがおかしかったのでしょうか?

関連するQ&A

  • アクセス サブフォームの使い方

    フォームにテキストボックスとコマンドボタンサブフォームが1つづつありま す。 やりたいことは、テキストボックスに入力した条件でコマンドボタンを押すと サブフォームに結果が表示されるというものです。 ID 分類 名称 1  花  バラ 2  花  ユリ 3  昆虫 カブトムシ とテーブルがあった場合、 テキストボックスに 花 を入力すると サブフォームに バラとユリが 表示されるというものです。(実際にはフィールド数はもっとあります。) コマンドボタンにクエリの実行を登録し、サブフォームはクエリをベースに作 成しました。 コマンドボタンをクリックするとクエリの結果が表示され(当たり前ですね) サブフォームは白紙のままです。 ファームのデザインビューをクリックし、再度フォームを表示すると結果は反 映されます。 この、クエリの結果を表示せず、かつサブフォームに結果を表示させる方法を 教えてください。

  • サブフォームでクエリの更新

    「Q検索」というクエリと「F検索」というフォームを作成しフォーム上には「番号テキスト」とコマンドボタンを作成後、F検索にQ検索をドラッグしてQ検索のサブフォームを作成しました。 Q検索の番号フィールドの抽出条件には[Forms]![F検索]![番号テキスト]は入力しています。 やりたいことは 番号テキストに番号を入力しコマンドボタンをクリックしたら 一致する番号だけをサブフォームに表示させたいのですがどうすればいいのかわかりません。 今の状態は コマンドボタンのクリックイベントにVBA DoCmd.OpenQuery "Q検索", acNormal, acEdit 普通にクエリが開いてしまいます。 これをサブフォームで行うにはどうすればいいのでしょうか? よろしくお願いします。

  • Access:サブフォームにクエリ表示⇒フィールドを絞り込みたい

    Access2003 WinXP です。 フォームにサブフォームを置き、サブフォームのソースオブジェクトにクエリを参照しているデータシート形式のフォームを設定しています。 フォームに絞込み条件を選択するオプションボタン、表示するフィールドを選択するオプションボタンを配置し、 サブフォームへ表示するコマンドボタンを置いています。 この設定を選択した後コマンドボタンを押すと、クエリの中身を書き換えています。 で、実行すると、表示しない設定のフィールドには「Name?」という値が入ったフィールドがしっかり表示されてしまいます。 ソースオブジェクトにクエリ自体を設定すれば回避出来ますが、表示されたデータをダブルクリックするとその1レコードを表示する画面を更に開きたいと思っていますので、サブフォームにデータシート形式のフォームをセットするのがダブルクリックイベントを取得出来て良いかと思っています。 分かりにくい説明ですみません。 何か解決法を分かる方いらっしゃいましたら、お願いします。

  • クエリを使ったサブフォームが作れない

    ただいま、貸出システムを作っていたのですが、 物品と貸出者を分けて、フォームを作ろうと考えています。 両方テーブルで作った場合、サブフォーム表示はできるのですが、 物品のクエリを作った場合、サブフォームがうまくつくれません。 クエリを使って、サブフォームを作るには、どのようにしたら、 よろしいのでしょうか?

  • Access2007でサブフォームを再クエリする

    ==環境== OS:Windows XP Professional Ver.2002 Service Pack 3 Access 2007 マクロを使って下記の操作をしようとしています。 以前Access2000を使っていて使用できたマクロが、Access2007では動かなくなってしまいました。 このマクロをどう修正したらいいのかわかりません。 [1]フォームAに作られた一覧表(テキストボックスを使って表示している) ----------------------------------- 品名------金額a-----金額b-----合計 製品1----5000-------6000@------11000 製品2----4000-------3000-------7000 ----------------------------------- [2]そのうち明細が見たい箇所のテキストボックスをクリック  ※この場合、製品1の金額bの明細を表示させたいので   `@マークが付いているテキストボックスをクリックしています。 [3]サブフォームを持つフォームBが開く [4]フォームBの検索条件 テキストボックスの『品名検索欄』に「製品1」を入力 オプショングループの『金額区分』の「b」がON [5]フォームBを再クエリ  ※フォーム上には再クエリボタンが設置されています。   サブフォームは「sub_form」という名前で配置されています。 ==2000でのマクロ== [3]から[5]について、以下のように作成しています。 (1)フォームを開く ・フォーム名:フォームB (2)値の代入 ・アイテム:[Forms]![フォームB]![品名検索欄] ・式:[Forms]![フォームA]![品名] (3)値の代入 ・アイテム:[Forms]![フォームB]![金額区分] ・式:2 (4)キー送信 ・キー操作:+{F9} ・待機:いいえ ==2007での状況== 2000で作成したマクロをそのまま使うと(4)が動かないようです。 フォームB上では品名と金額区分が入力されており、 サブフォームに表示されるはずのデータは空です。 フォームB上の「再クエリ」ボタンを押すとデータが表示されました。 試しに(4)キー送信を再クエリ(コントロール名:sub_form)に変えたところ 「カレントレコードには'sub_form'という名前のフィールドはありません。」 と表示されてしまいました。 このマクロをどう直したらいいでしょうか。 皆さん、よろしくお願いいたします。

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

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

  • Access コマンドボタンクリックでサブフォームに結果表示

    Access初心者です。 フォームに50音順コマンドボタンを作成、 コマンドボタンの「あ」をクリックしたら、下のサブフォームに 「あ」から始まる名前を表示したいのです。 サブフォームに表示するクエリの抽出条件にどのようにを入力するのでしょうか?あいまい検索?? コマンドボタンのイベントからマクロを作成するのでしょうか? すごく初歩的な質問ですね、、、お恥ずかしい どなたか教えていただければうれしいです。

  • Accessでのサブフォーム内の再クエリについて

    Access上で新しいデータベースを作成中なのですが、サブフォーム内の再クエリが上手くできません。 2つのコンボボックスを連動させた物がサブフォーム内にあるのですが、この2つを連動させる為にどうしてもサブフォームでの再クエリが必要となります。 そして、その再クエリのマクロでのコントロール名がわかりません。 最初のコンボボックスを[果物]次のコンボボックスを[りんご]と仮定すると、 [果物]→再クエリ→[りんご]のような形になる為、コントロール名は[りんご]になるはずなのですが、サブフォーム内の[りんご]の為、なんと表現していいのかわかりません。その結果、上手く再クエリが働いてくれません。 コントロール名はなんと書けばよろしいのでしょうか? (何も書かなくても再クエリされないです…) Access初心者なのでわかりやすく言っていただければと思います。 長い質問になってしまいましたがよろしくお願いいたします。

  • Accessのクエリ

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

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

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