フォームのサブフォームコントロールの"ソースオブジェクト"プロパティに、サブデータシートが設定されているテーブルやクエリを指定すると、フォーム上でもサブデータシートを表示させることができます。
ここでは、Accessのメニューを使わず、コマンドボタンのクリック一発で、サブデータシートの"すべて展開"、"すべて折りたたみ"を実行させる方法を紹介します。
- まず、単票形式のメインフォームを作成します。
- サブフォームコントロールを配置し、その名前を例として"sfrm購入明細_sub"とします。
- サブフォームコントロールの"ソースオブジェクト"プロパティを設定します。ここでは、他のフォームではなく、サブデータシートが設定されているテーブルやクエリを直接指定します。
- メインフォームに[すべて展開]と[すべて折りたたみ]の2つのコマンドボタンを配置します。ここではそれぞれの名前を"cmdSubExpand"、"cmdSubCollapse"としました。
- それらのクリック時イベントプロシージャを次のようにします。
Private Sub cmdSubExpand_Click()
'[すべて展開]ボタンクリック時
'対象となるサブフォームにフォーカス移動
Me!sfrm購入明細_sub.SetFocus
'すべて展開コマンドを実行
DoCmd.RunCommand acCmdSubdatasheetExpandAll
End Sub
Private Sub cmdSubCollapse_Click()
'[すべて折りたたみ]ボタンクリック時
'対象となるサブフォームにフォーカス移動
Me!sfrm購入明細_sub.SetFocus
'メインデータシートの任意のコントロールにフォーカスを戻す
Me!sfrm購入明細_sub!伝票番号.SetFocus
'すべて折りたたみコマンドを実行
DoCmd.RunCommand acCmdSubdatasheetCollapseAll
End Sub
【実行結果】
|