フォームでデータ入力や閲覧を行う場合、データの構成や量などによって、データシート(もしくは表形式)の方が見やすかったり、単票形式の方が入力しやすかったりと、ケースによって最適な画面形式は異なります。
そこでここでは、通常はデータシート形式のフォームを表示し、複数レコードにまたがる視認性を確保しながらも、一方で、その編集作業を行う場合は簡単に単票形式のフォームに切り替えることができる、といった画面の作り方を紹介します。
ここでは次のようなデザインのフォームを用意しました。

"顧客マスタ_sub"という名前のサブフォームと、"cmd切り替え"という名前のコマンドボタンが配置されています。そして、この"cmd切り替え"をクリックすることによって、データシートと単票を交互に切り替えるようにします。なお、顧客マスタ_subフォームについては、そのデザインとして、「既定のビュー」プロパティを"データシート"に設定しておきます。
そして、cmd切り替えのクリック時イベントプロシージャを次のように記述します。ここでの留意事項として、RunCommandメソッドの引数には、"acCmdFormView"や"acCmdDatasheetView"ではなく、"acCmdSubformFormView"や"acCmdSubformDatasheetView"を指定します。これは、ビューを切り替える対象がサブフォームだからです。もし通常のメインフォーム側を切り替えたい場合には、"acCmdFormView"を指定します。
Private Sub cmd切り替え_Click()
'[データシート<->単票表示]ボタンクリック時
'現在のビューの形式を保存するStatic変数
Static intCurView As Integer
Me!顧客マスタ_sub.SetFocus
If intCurView = 0 Then
'このイベントがはじめて呼ばれたとき
'サブフォームは既定のビューがデータシートにデザインされて
'いるので、切り替え前のビューの状態を"データシート"に設定
intCurView = 1
End If
Echo False
If intCurView = 1 Then
'データシートなら単票形式(フォームビュー)に切り替え
DoCmd.RunCommand acCmdSubformFormView
'現在のビューの変数を"単票形式"に切り替え
intCurView = 2
Else
'単票形式ならデータシートに切り替え
DoCmd.RunCommand acCmdSubformDatasheetView
'現在のビューの変数を"データシート"に切り替え
intCurView = 1
End If
Echo True
End Sub
実行例:


[データシート<->単票表示]ボタンをクリック


もう一度[データシート<->単票表示]ボタンをクリック
 |