• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:親フォームからサブフォームのレコードソースを設定)

親フォームからサブフォームのレコードソースを設定する方法

このQ&Aのポイント
  • 親フォームからサブフォームのレコードソースを設定する方法について教えてください。
  • フォーム1にテーブル1をドロップアンドドラッグして、「テーブル1のサブフォーム」を作成しました。フォーム1のコマンドボタンから「テーブル1のサブフォーム」のRecordSourceを設定する方法を教えてください。
  • フォーム1から「テーブル1のサブフォーム」のRecordSourceを設定する方法についてアドバイスをお願いします。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

No2です。説明もれがあったので追加しておきます。 No2のところで、 >このとき、「テーブル1のサブフォーム」 >のフィールドには「#Name?」のような表示がされていると >思います。すなわちこときはサブフォームにはレコードソースが >設定されていないからです。 としていますが、「#Name?」と表示される理由はフィールドの コントロールソースが設定されているために、「#Name?」のような 表示が出てきます。 ここからは蛇足ではありますが、コントロールソースが設定されていなければ こうした表示はでませんが、もしコントロールソースも取り除いて いるならば、コマンド1でもコマンド2のクリックイベントでもどちらでも かまいませんが、たとえば「テーブル1のサブフォーム」の フィールドのコントロールソースをすべて取り除いておいて、 コマンド2のクリックイベントで設定するとすれば、一応 「テーブル1のサブフォーム」のフィールドの名前をID、名前、住所として テーブル1のフィールド名を同じくID、名前、住所とするならば、 Private Sub コマンド2_Click() Me.テーブル1のサブフォーム.Form.RecordSource = "テーブル1" Me.テーブル1のサブフォーム.Form.Controls("ID").ControlSource = "ID" Me.テーブル1のサブフォーム.Form.Controls("名前").ControlSource = "名前" Me.テーブル1のサブフォーム.Form.Controls("住所").ControlSource = "住所" End Sub として、レコードソース、コントロールソースを設定します。

HCEHCKNQZ
質問者

お礼

ありがとうございました。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

一応、以下を確認をしておきます。 1 「フォーム1」は親フォーム 2 「テーブル1のサブフォーム」はサブフォーム 3 「テーブル1のサブフォーム」のRecordSourceは「テーブル1」 であるとします。何故という部分をわかりやすく するために以下のように設定してみてください。 1 「テーブル1のサブフォーム」をデザインビューで開き、   プロパティの「レコードソース」の「テーブル1」を   削除し、そのまま保存してとじてください。 2 親フォームをデザインビューで開き、サブフォームを   表示するコントロールのプロパティを開き「ソースオブジェクト」   の「テーブル1のサブフォーム」を削除し、そのまま閉じてください。   このとき、サブフォームを表示するコントロールの名前が   「テーブル1のサブフォーム」になっているのか、あるいは   「埋め込み0」のような名前になっているのか確認をしてください。   もし、「埋め込み0」のような名前になっているのならば   以下のコードの中で「テーブル1のサブフォーム」を   「埋め込み0」というように変更してください。 フォーム1にコマンドボタンを二つ設定し、それぞれのクリック イベントに以下を設定します。 'サブフォーム表示コントロールのソースオブジェクトの設定 Private Sub コマンド1_Click() Me.テーブル1のサブフォーム.SourceObject = "テーブル1のサブフォーム" End Sub 'サブフォーム表示コントロールに設定するフォームのレコードソースの設定 Private Sub コマンド2_Click() Me.テーブル1のサブフォーム.Form.RecordSource = "テーブル1" End Sub フォーム1のサブフォーム表示コントロール名の設定が うまくいっていれば、コマンド1のクリックイベントで 「フォーム1」に「テーブル1のサブフォーム」が表示 されたと思います。このとき、「テーブル1のサブフォーム」 のフィールドには「#Name?」のような表示がされていると 思います。すなわちこときはサブフォームにはレコードソースが 設定されていないからです。 次に、コマンド2のクリックイベントで、「テーブル1のサブフォーム」 にレコードが表示されたと思います。 上記は「親フォーム」、「サブフォーム表示コントロール」、 「サブフォーム」の関係を質問のフォームを使って説明したものです。 したがって、質問の回答を端的にするならば、上記の操作を せずに、 Me.テーブル1のサブフォーム.Form.RecordSource = "テーブル1" すなわち、上記のコマンド2のクリックイベントが 回答ということになります。

HCEHCKNQZ
質問者

お礼

ありがとうございました。

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

Me.テーブル1のサブフォーム.Form.RecordSource = "テーブル1のサブフォーム"

HCEHCKNQZ
質問者

お礼

ありがとうございました。