#381 データシートのカレント行をその場で単票表示に切り替える方法 フォーム、VBA

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

ここでは次のようなデザインのフォームを用意しました。
フォームのデザイン
"顧客マスタ_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


実行例:
初期状態の画面

[データシート<->単票表示]ボタンをクリック
ボタンをクリックしたあとの画面

もう一度[データシート<->単票表示]ボタンをクリック
もう一度ボタンをクリックしたあとの画面
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved