Linuxサーバより愛を込めて。

Linux(Ubuntu)サーバとダーツを愛する中年サラリーマンの日記。

Microsoft Office

Accessのメニュー用フォームビルダでメインメニューを作ってみる その3

2015/04/01

前回まで

ひとまずフォームビルダを使用してメニュー画面を作成してみました。その結果「Switchborad Items」テーブルと関連付けられているらしいことは分かりましたが、実際どのような処理で画面が構成されているのでしょうか?

 

というわけで今回はフォームに埋め込まれたVBAを見ながらその構造を読み解きたいと思います。

 

フォームの中身を確認する

まずは作成したメニュー画面「Main Switchboard」をデザインビューで開いてプロパティを表示してみます。

メニューフォーム16

 

 

するとこんな画面になりました。

メニューフォーム17

 

 

前にも見てみましたが、実は8ヶのボタンがあるのが分かると思います。一体どういうことなのでしょう?

 

フォームを読み込むときの処理を調べる

ここでフォームのプロパティウィンドウを開いて埋め込まれたコードを確認してみます。

メニューフォーム18

 

すると「レコード移動時」と「開くとき」に処理が埋め込まれているのが分かります。まずは開くときの処理を見てみましょう。

メニューフォーム19

 

※ちなみに「データ」タブをクリックするとレコードソースが「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の行で

 

「作成したフィルターを有効にするよ」

 

という処理を行っています。改めてテーブルを見てみると

 

メニューフォーム15

 

 

というデータ構成になっていますので、読み込まれるレコードは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プロシージャを見ていきたいのですが、長くなってきたのでここらで休憩しましょう。続きは次回!

-Microsoft Office
-,