• ベストアンサー
  • 困ってます

ACCESS2003でサブフォームを使う

すみませんが教えてください。 親フォームの中に、サブフォームを作ります。 サブフォームにはクエリの内容が表示されています。 そのサブフォームの内容を、親フォームに表示させたいです。 (サブフォームをクリックすると、親フォームの内容も切り替わる) VBAが必要なのでしょうか。 もしそうであれば、参考になるページ、もしくはコードを教えていただけるとありがたいです。 現在、親フォームのほうには [Forms]![登録内容クエリ2フォーム]![登録内容マスタのサブフォーム] ![Forms]![内容]と設定しているのですがこのままではうまくいかないのですね;; ヨロシクお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数751
  • ありがとう数0

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

  • ベストアンサー
  • 回答No.1

> VBAが必要なのでしょうか。 親フォームのデータに合致するレコードをサブフォームに表示するのであれば VBAではなくても可能ですが(→サブフォームのプロパティシートで、「リンク親 フィールド」と「リンク子フィールド」を設定)、今回はそれとは逆のパターンなので、 VBA(又はマクロ)が必要です。 仮に、サブフォームのID,Text1,Text2の各データを、親フォームのID,Text1,Text2の 各テキストボックスに転記するのであれば、以下のようになります。 (なお、ここでは、親フォームの各コントロールは非連結と想定しています:  親フォームのデータをサブフォームのデータで上書き、という場合は連結でも可) 'サブフォームのレコード移動時: Private Sub Form_Current()   '親フォームのID,Text1,Text2の各テキストボックスに、   'サブフォームのID,Text1,Text2のデータを転記します   With Me.Parent     !ID = Me!ID     !Text1 = Me!Text1     !Text2 = Me!Text2   End With End Sub    ------------------------ なお、親フォームも連結フォームで、サブフォームでの選択結果を元にして レコードを絞り込む、という想定でしたら、親フォームに『対象ID』といった 非連結コントロールを設置して(不可視または使用不可でOK)、これを 絞り込み条件とするクエリを、親フォームのレコードソースにして下さい。 こうすれば、上と同様に、サブフォームのレコード移動時イベントで対象IDに サブフォームのIDを代入した後、親フォームを再クエリすることで、 親フォームの表示を切り替えられると思います。 親フォームのレコードソース: Select * From テーブル名 Where ID Like Forms!親フォーム名!対象ID ※親フォームの全レコード表示(絞り込み解除)を、『対象ID』への「*」の代入   で対応するため、「ID = ~」ではなく「ID Like ~」としています。   (ワイルドカード文字(*,#など)を入れなければ、曖昧検索にはなりません)   (フォーム展開時のエラーを回避するため、対象IDの既定値は「"*"」にしておきます) 'サブフォームのレコード移動時: Private Sub Form_Current()   With Me.Parent     !対象ID = Me!ID     .Requery   End With End Sub '親フォームの「絞り込み解除」ボタンのクリック時: Private Sub 絞り込み解除_Click()   'メッセージボックスで「キャンセル」を選択したら、解除を中止   If MsgBox("絞り込みを解除します。", vbOKCancel, "確認") = vbCancel Then Exit Sub   '対象IDに「*」を代入して再クエリすることで、全レコードを表示   '(親フォーム「ID」が主キーを想定しているため、Null(空白)はないという前提)   With Me     !対象ID = "*"     .Requery   End With End Sub

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • サブフォームにデータが表示されない!

    サブフォームにデータが表示されない! フォーム(1)(非連結のtxt顧客コード) フォーム(1)にサブフォーム(2)(レコードソースはクエリ(3))を作り、 クエリ(3)顧客コードの抽出条件に[forms]![フォーム(1)].[form].[txt顧客コード]で選択しています。 フォーム(1)が開いた時にクエリ(3)は抽出しているのにそのデータがサブフォーム(2)に表示されません・・・ フォーム(1)を一度デザインビューにして開き直すとサブフォーム(2)に反映表示されます。 いろんな所にRequeryを入れたりしてみましたが、フォーム(1)を開いたときに一発で表示されません、教えてください!宜しくお願いいたします。

  • Access2016 サブフォームへのデータ取込み

    メインフォームに入力したコードによって、マスターに登録してある複数のレコードデータをサブフォームに取り込みたいのですが。 例: メインフォームに献立コード(例えばカレーのコード)を入力すると、献立マスター(献立によって材料と使用量が登録してある)の材料(じゃがいも、人参、玉ねぎ、牛肉、ルー)と使用量がサブフォーム(今回5件のデータ)に入力されるような処理を行いたいのですが、ご教授願えませんでしょうか。もしVBAが必要ならばそれでもお願いしたいと思います。 メインとサブフォームのリンク親子フィールドは年月日にしています。 お手数おかけいたしますがよろしくお願いいたします。

  • Access2000 フォーム/サブフォームについて

    質問させていただきます。 フォーム/サブフォーム形式で画面を作っています。サブフォームは帳票形式で、複数のレコードを表示しており、各行の左にコマンドボタンを用意し、それをクリックすると、更新クエリー、削除クエリーが動くようにしています。 しかし、更新、削除クエリーとも ”0件のレコード”で処理が正しく動作しません。 ちなみに、両クエリの抽出条件は・・・ [Forms]![メインフォーム]![サブフォーム]![商品コード] しかし、フォームを使わずクエリーから実行する(パラメータに条件を手入力する)と正しく動作します。 記述ミスがないか何度も見返したのですが・・・。 「サブフォームの目的の行の商品コードと一致するデータを処理する」としたいのですが・・・。

  • サブフォームのデータをそのままひっぱってきたい。

    Access2002です。 T_マスタ・T_サブ・T_備考という3つのテーブルをもとに F_マスタ・F_サブ・F_備考という3つのフォームを作成しています。 F_マスタの中にF_サブをサブフォームとして設定してあります。(氏名IDでリンク) F_サブの中に、Fサブ上の情報(氏名ID・データ年)で検索をして開く F_備考を開くためのコマンドボタンを設置してあります。 そこでF_備考を開いた後に、何も検索結果が出されなかったら、 入力をするために、「入力」というボタンを設置しました。 このボタンを押すと、F_サブ上の「氏名ID」「データ年」を 自動でF_備考の同じ名前のところへ入力したいのです。 ですが、実行すると「F_サブフォームは見つからない」という旨の エラーが出てしまいます。 それならF_サブを開いてしまえと、コマンドボタン上に、 F_サブを開く設定をしたのですが、今度は 「サブフォームに設定してあるフォームは開けない」という エラーメッセージが表示されてしまいました。 サブフォームのデータをそのまま参照することはできないのでしょうか? 実際のコードは以下のような簡単なものです。 F_備考の「入力」ボタン Me!氏名ID = Forms![F_サブ]![氏名ID] Me!データ年 = Forms![F_サブ]![データ年] どうやったらデータをひっぱってこれるのでしょうか? 宜しくお願いします。

  • Access サブフォームの埋め込みについて

    サブフォームは「月を入力」というパラメーターを設定したクエリを使って作成した レポートです。下記2点について、よろしくお願いします。 ●サブフォームのラベルが表示されない サブフォームを埋め込んだレポートを作成したのですが、 レポートビューに切り替えたとき、各コントロールのラベルが表示されません。 (デザインビューではページヘッダーに各ラベルが表示されているのですが・・・) プロパティーシートの「可視」は「はい」になっています。 ●レポートビューに切り替えたとき、[月を入力]というパラメーターが何度も表示される 画面をスクロールする度に表示されてしまいます・・・ Access初心者で、質問内容もわかりにくいかと思いますが、 どうぞよろしくお願いします。

  • Accessのサブフォームつきフォームを使い回しをしたい

    Accessでサブフォームを使っていくつかの表を表示させたいと思っています。 それで表示させたい表はテーブルは違いますがフィールドは似たようなものなので、 1つのフォーム(とサブフォーム)ですべての表を表示させたいと思っています。 つまり前の画面でどのボタンをクリックしたかによってフォームのRecordSource(SQL文)を変更したいのです。 それで色々やってみたのですがどうもうまくいきません。 1.まずどの部分でRecordSource(フォーム、サブフォーム両方とも)の設定をすればよいのかよくわからない。 2.色々試行錯誤して設定して表が表示されるようになったが、なぜかデータが1件もない時にサブフォームが表示されない(サブフォームに表のタイトルが書いてありますがそれが表示されない)。 3.それも試行錯誤してうまく表示させることができるようになったが、そこでも問題がありました、1つの表のデータだけそこで編集できるようにしたいのですがなぜか編集できません(SQL文でRecordSourceを設定していますがそのSQL文はクエリで書くと編集できます)。 もしかしたら根本的に間違っているかもしれませんので、プログラムやプロパティの設定をどのようにしたらよいか最初からご説明していただけますでしょうか?

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

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

  • accessフォームでサブフォームの合計値が出てこない

    注文書を作っています。 サブフォーム中で各項目の金額を表示させます。 これらの金額を名前"金額計"で=Sum([金額])で計算しました。 この値は,サブフォーム単独で開いた時には間違い無く表示されます。 しかし,このサブフォームを使ったフォームで,この"金額計"が#Name?となり,なんとも表示できませんでした。 金額計表示の為のコントロールソースは,=[Forms]![サブフォーム]![金額計]としたり,=[サブフォーム].[Forms]![金額計]としたりしているのですが。 何かケアレスミスでもしているのでしょうか。 データの型等は双方で合せて間違いは無いと思うのですが。 些細な事でも結構なのでよろしくお願いします。

  • マイクロソフト ACCESSのサブフォームについて教えてください。

    入力用のフォームを使用して、テーブルにレコードを入力し、その際にサブフォームを使用し入力履歴の一覧を参考表示させています。 フォームとサブフォームは、商品コードで関連付けていますが、フォームに商品コードを入力しただけでは サブフォームに履歴が表示されず、次のレコードに移り、再び、元のレコードに戻った場合のみ履歴が表示されます。 この場合、商品コードを入力したら、直ちにサブフォームに履歴を表示させる方法は何かありませんでしょうか。 どうぞご存知の方お助けください。

  • 「サブフォーム」の名前を取得したい

    アクセスのフォームの中にサブフォームが2つあります。 このうちの一つのサブフォームをクリックした時に 自身のフォーム名をVBAで取得したいのですが、 サブフォームのモジュールで Debug.Print Screen.ActiveForm.Name をすると、 親フォームが取得されます。 Forms("親フォーム").Controls("サブフォーム").Form.Controls("担当者").Value の部分の、「親フォーム」が取得されます。 「サブフォーム」の部分を取得するコードはありますか?