
親フォームからサブフォームのレコードソースを設定するには?
フォーム1にテーブル1をドロップアンドドラッグして、「テーブル1のサブフォーム」を作成しました。
フォーム1にあるコマンドボタンから「テーブル1のサブフォーム」のRecordSourceを設定する方法を教えてください。
「テーブル1のサブフォーム」からなら
Private Sub Form_Load()
Me.RecordSource = ""
End Sub
とできるのですが、
やりたいことはフォーム1からのイベントなので
「テーブル1のサブフォーム」からのイベントは使えません。
だからってフォーム1の
Private Sub コマンド2_Click()
Me.テーブル1のサブフォーム.RecordSource = "テーブル1のサブフォーム"
End Sub
とするとコンパイルエラーになります。
良い方法があれば教えてください。アドバイスよろしくお願いします。

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
として、レコードソース、コントロールソースを設定します。
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のクリックイベントが
回答ということになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
電子書籍プレゼントキャンペーン!
最大2万円超分当たる!マンガや小説が読める電子書籍サービス『Renta!』で利用できるギフトコードプレゼント実施中!
-
Access サブフォームでの選択行の取得
その他(データベース)
-
ACCSESS2013VBA フォームのレコードソースを変更する
その他(データベース)
-
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
4
【Access】サブフォームのソースオブジェクトを入れ替えたい
Access(アクセス)
-
5
アクセスVBAのMe!と[ ]
Access(アクセス)
-
6
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
7
Access2000 サブフォームのRecordSet取得法
Access(アクセス)
-
8
AccessのRefresh・Requery・Repaintの違い
Access(アクセス)
-
9
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
10
ACCESSでコントロールソースの変更
Access(アクセス)
-
11
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
12
AccessVBA RecordSourceのリセットについて
Access(アクセス)
-
13
Access サブフォームのレコードソースを変更するには
Access(アクセス)
-
14
レコードセットで得た結果をサブフォームに出力したい
その他(データベース)
-
15
どこにもフォーカスを当てたくない
Access(アクセス)
-
16
ACCESS──メインフォームでサブフォームのレコード件数をカウントしたい
Access(アクセス)
-
17
accessVBA 「フォームが見つかりません」
その他(データベース)
-
18
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
19
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
20
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
access フォーム上で複数行の...
-
5
ACCESS──メインフォームでサブ...
-
6
ACCESS VBA メインフォーム及び...
-
7
Access フォームで条件抽出し...
-
8
ACCESSサブフォームにデータ反...
-
9
ACCESSで条件によってサブフォ...
-
10
ACCESSのサブフォームコピーに...
-
11
【Access】サブフォームのソー...
-
12
DLookup関数を使ってサブフォー...
-
13
サブフォームの高さをVBAで調整...
-
14
Accessで埋め込んだサブフォー...
-
15
ACCESS サブ・メインフォーム...
-
16
AccessのTree View,List Viewの...
-
17
アクセス2003のサブフォームの...
-
18
Access2010 サブフォームの並び...
-
19
アクセスでエラー・・・
-
20
AccessでHTMLのフレームの様に...
おすすめ情報
公式facebook
公式twitter