【Accsess】フォームから条件指定して別フォームを開く

一覧(表形式)のフォームと個別(単票式)フォームがあり、一覧の中からレコードを選択し詳細フォームを開く方法です。

環境:Microsoft 365

目次

【完成例】一覧フォームから個別フォームを開く

  • 一覧フォーム(表形式):フォーム「F会員一覧」
  • 個別フォーム(単票式):フォーム「F会員個別」

フォーム「F会員一覧」の会員番号「10002」を選択しコマンドボタン「詳細」をクリックすると、フォーム「F会員個別」の会員番号「10002」が開く。

一覧フォームから個別フォームを開く方法

ここでの例は、別フォームをダイアログボックスとして表示します。

設定方法

(1)フォーム「F会員一覧」をデザインビューで開きます。

(2)コマンドボタンを配置し、表題と名前を変更します。

ここでは次のように設定しました。

  • 名前:CmdOpenK
  • 表題:詳細
プロパティシート

(3)詳細ボタンを選択し、プロパティシートよりイベントの「クリック時」右側の「・・・」をクリックします。

(4)コードビルダーを選択し、「OK」をクリックします。

access

(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

目次