■ フォームのレコードセレクタをクリックしたとき詳細を表示する (2000,2002,2003,2007)

図 フォームのレコードセレクタをクリックしてポップアップウィンドに詳細を表示する
得意先フォームにレコードの詳細を表示する機能を付加します。フォームに得意先レコードが表示されたら、レコードセレクタをクリックします。ポップアップウィンドが開いて、得意先レコードの詳細が表示されます。
1. 新規データベース作成
Accessを起動したら、ツールバーから新規作成のアイコン
をクリックして、作業フォルダworkにW110.mdbを作成します。
2. テーブル、クエリをインポート
Windowsのエクスプローラから、110.mdb(このページの最後からダウンロードできます)をダブルクリックして開きます。データベースウィンドウのオブジェクトから[テーブル]をクリックしたら、得意先テーブル(tblCustomers)をドラッグしてW110.mdbのデータベースウィンドウにドロップします。同様の手順で、得意先クエリ(qryCustomers)をドラッグ&ドロップします。テーブル、クエリをインポートしたら、110.mdbを閉じます。
3. ポップアップフォーム作成
データベースウィンドウのオブジェクトから[フォーム]を選択したら、[新規作成]ボタンをクリックします。「新しいフォーム」のダイアログが表示されたらリストボックスから[オートフォーム:単票形式]を選択します。基になるテーブルまたはクエリの選択から[tblCustomers]を選択します。[OK]ボタンをクリックしてダイアログを閉じます。
フォームが自動生成されたら、ツールバーからデザインビューのアイコン
をクリックします。デザインビューに切り替わったら、フォームの未使用領域をダブルクリックしてプロパティウィンドウを表示します。フォームのプロパティウィンドウからポップアップに[はい]を設定します。ツールバーから上書き保存のアイコン
をクリックして「fdlgCustomerDetails」の名称で保存します。

図 ポップアップフォームを作成したら「fdlgCustomerDetails」の名称で保存する
4. メインフォーム作成
データベースウィンドウから[新規作成]ボタンをクリックします。「新しいフォーム」のダイアログが表示されたらリストボックスから[オートフォーム:表形式]を選択します。基になるテーブルまたはクエリの選択から[qryCustomers]を選択します。[OK]ボタンをクリックしてダイアログを閉じます。フォームが自動生成されたら、ツールバーからデザインビューのアイコン
をクリックします。
5. フォームのOnClickイベント登録
ツールバーからコードのアイコン
をクリックしてVBE(Visual Basic Editor)を表示します。コードビューが表示されたら、オブジェクトのドロップダウンリストから[Form]を選択します。プロシージャのドロップダウンリストからは、[Click]を選択します。フォームのOnClickイベントが生成されたら、次のコードを追加します。
Private Sub Form_Click()
Dim strCriteria As String
strCriteria = BuildCriteria(Field:="CustomerID", _
FieldType:=dbLong, _
Expression:=[CustomerID])
DoCmd.OpenForm FormName:="fdlgCustomerDetails", _
View:=acNormal, _
WhereCondition:=strCriteria, _
DataMode:=acFormReadOnly
End Sub
6. フォームを開く
VBEのツールバーから表示(Access)のアイコン
をクリックして、Accessのウィンドウに切り替えます。Accessのツールバーからフォームビューのアイコン
をクリックしてフォームを開きます。フォームが表示されたら、得意先IDが2のレコードセレクタをクリックします。ポップアップウィンドウが表示されて、得意先ID2の詳細が表示されます。

図 メインフォームからレコードセレクタをクリックしてポップアップウィンドウに詳細を表示する
●解説
メインフォームからレコードセレクタをクリックしたときポップアップウィンドウを表示するには、フォームにクリック時/OnClickイベントを登録します。このイベントでは、DoCmdオブジェクトのOpenFormメソッドでポップアップフォームを開きます。
書式
OpenForm(FormName, View, FilterName, WhereCondition, DataMode, WindowMode, OpenArgs)
引数FormNameには、ポップアップフォームの名前(fdlfCustomerDetails)を指定します。引数Viewには、acNormal(フォームビューで表示)を指定します。引数WhereConditionには、SQLのWHERE句を指定します。ここでは、メインフォームから選択した得意先を抽出するために、CustomerID=999のようなWHERE句を指定します。なお、WHERE句はBuildCriteria()関数を使用して生成します。
BuildCriteria("CustomerID", dbLong, 999) → CustomerID=999
引数DataModeには、acFormReadOnly(レコードの参照のみ可能)を設定します。その他の引数は省略します。
Private Sub Form_Click()
Dim strCriteria As String
strCriteria = BuildCriteria(Field:="CustomerID", _
FieldType:=dbLong, _
Expression:=[CustomerID]) ‘ SQLのWHERE句生成
DoCmd.OpenForm FormName:="fdlgCustomerDetails", _
View:=acNormal, _
WhereCondition:=strCriteria, _
DataMode:=acFormReadOnly ‘ ポップアップフォームを開く
End Sub