一覧(表形式)のフォームと個別(単票式)フォームがあり、一覧の中からレコードを選択し詳細フォームを開く方法です。
【完成例】一覧フォームから個別フォームを開く
- 一覧フォーム(表形式):フォーム「F会員一覧」
- 個別フォーム(単票式):フォーム「F会員個別」
フォーム「F会員一覧」の会員番号「10002」を選択しコマンドボタン「詳細」をクリックすると、フォーム「F会員個別」の会員番号「10002」が開く。
一覧フォームから個別フォームを開く方法
ここでの例は、別フォームをダイアログボックスとして表示します。
設定方法
(1)フォーム「F会員一覧」をデザインビューで開きます。
(2)コマンドボタンを配置し、表題と名前を変更します。
ここでは次のように設定しました。
- 名前:CmdOpenK
- 表題:詳細
(3)詳細ボタンを選択し、プロパティシートよりイベントの「クリック時」右側の「・・・」をクリックします。
(4)コードビルダーを選択し、「OK」をクリックします。
(5)コードを入力します。
コードの説明
If Not IsNull(Me.会員番号.Value) Then
DoCmd.OpenForm “F会員個別”, , , _
”会員番号 = ” & Me.会員番号.Value, , acDialog
End If
- 1行目
Not IsNull(Me.会員番号.Value)
→ 会員番号の値がNull値でないとき処理を実行する。 - 2行目
DoCmd.OpenForm "F会員個別"
→ DoCmdオブジェクトのOpenFormメソッドでフォーム「F会員個別」を開く。 - 3行目
"会員番号 = " & Me.会員番号.Value
→ フォームを開くときのフィルタ条件式 - 3行目
acDialog
→ OpenFormメソッドの6番目の引数に「acDialog」を指定するとダイアログボックスとして開く。省略した場合は、通常のウィンドウで開く。
Dim sCriteria As String
sCriteria = “会員番号 = ” & Me.会員番号.Value
If Not IsNull(Me.会員番号.Value) Then
DoCmd.OpenForm “F会員個別”, , , sCriteria, , acDialog
End If
データ型がテキストの場合の条件式
上記の例はデータ型が数値です。
データ型がテキストの場合
条件式を「"会員番号 = " & Me.会員番号.Value」にするとパラメーターの入力が表示されます。
クリック時のイベントプロシージャに以下のようにコードを入力します。
If Not IsNull(Me.会員番号.Value) Then
DoCmd.OpenForm “F会員個別”, , , _
”会員番号='” & Me.会員番号.Value & “‘”, , acDialog
End If
別フォームの閉じるボタン
別フォームに「閉じる」ボタンを設置した場合のコードです。
閉じるボタンの名前は「CmdClose」としました。
クリック時のイベントプロシージャに以下のようにコードを入力します。現在のアクティブなフォームを閉じるコードです。
DoCmd.Close acForm, Screen.ActiveForm.Name