前回まで
ひとまずフォームビルダを使用してメニュー画面を作成してみました。その結果「Switchborad Items」テーブルと関連付けられているらしいことは分かりましたが、実際どのような処理で画面が構成されているのでしょうか?
というわけで今回はフォームに埋め込まれたVBAを見ながらその構造を読み解きたいと思います。
フォームの中身を確認する
まずは作成したメニュー画面「Main Switchboard」をデザインビューで開いてプロパティを表示してみます。
するとこんな画面になりました。
前にも見てみましたが、実は8ヶのボタンがあるのが分かると思います。一体どういうことなのでしょう?
フォームを読み込むときの処理を調べる
ここでフォームのプロパティウィンドウを開いて埋め込まれたコードを確認してみます。
すると「レコード移動時」と「開くとき」に処理が埋め込まれているのが分かります。まずは開くときの処理を見てみましょう。
※ちなみに「データ」タブをクリックするとレコードソースが「Switchboard Items」となっており、テーブルとフォームが関連付けられていることも確認できます。
このようにVBEを起動して中のモジュールを確認してみます。すると・・・
Private Sub Form_Open(Cancel As Integer)
' Minimize the database window and initialize the form.
' Move to the switchboard page that is marked as the default.
Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'Default' "
Me.FilterOn = True
End Sub
フォームが開くときに最初に動くのは「Form_Open」の部分です。
Me.Filter = ~の部分で
「(レコードソースのテーブルに対する)フィルターを[ItemNumber]が0 かつ [Argument]がDefaultのデータを抽出するフィルターを作成するよ」
Me.Filter = Trueの行で
「作成したフィルターを有効にするよ」
という処理を行っています。改めてテーブルを見てみると
というデータ構成になっていますので、読み込まれるレコードは1行目ということになります。
続いて勝手に読み込まれる処理が「Form_Current」になります。
Private Sub Form_Current()
' Update the caption and fill in the list of options.
Me.Caption = Nz(Me![ItemText], "")
FillOptions
End Sub
ここで何をしているかというと、Me.caption = ~の部分で
フォームの表題をカレントレコード(今だったらテーブル内の1行目)の「ItemText」フィールドにするよ
FillOptionsにて
(下のほうで定義してある)Filloptionsプロシージャを呼び出すよ
という処理が走ります。
続いてはFillOptionsプロシージャを見ていきたいのですが、長くなってきたのでここらで休憩しましょう。続きは次回!