• 締切済み

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

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

専門家に質問してみよう