【Access】親フォームからの子フォームに値を渡す方法(OpenArgs)


親フォームからの子フォームに値を渡す方法です。

下記は、親フォーム上のテキストボックスに入力した値を、子フォームに渡す例です。


まず、親フォームにテキストボックス(textName)とボタン(buttonOpen)を配置します。



次に、子フォームにも同じようにテキストボックス(textName)とボタン(buttonExit)、あとラベルを配置します。


そして、それぞれのイベントプロシージャに次のように記述します。

親フォーム
Private Sub buttonOpen_Click()

    Dim args As String
    
    If IsNull(Me.textName.Value) = False Then
        args = Me.textName.Value
    End If
    
    DoCmd.OpenForm "子フォーム", acNormal, , , , acDialog, args
    
End Sub

子フォーム
Private Sub Form_Load()
    
    If IsNull(Me.OpenArgs) = False Then
    
        Me.textName.Value = Me.OpenArgs
    
    End If

End Sub

Private Sub buttonExit_Click()

    DoCmd.Close acForm, Me.Name

End Sub


では実行してみます。


まず、親フォームを開き、テキストボックスに値を入力します。

入力できたら「開く」ボタンをクリックします。



すると、このように子フォームのテキストボックスに親フォームで入力した値が表示されます。


解説

親フォームで、DoCmd.OpenFormの7番目の引数に指定した値は子フォームのOpenArgsプロパティで取得することが出来ます。注意としては、引数に値を指定しないとOpenArgsにはNullが入ってきますので、IsNull関数でチェックする必要があります。

AccessではこのOpenArgsを利用して、親フォームからレコードIDを子フォームに渡して、子フォーム上でそのIDの詳細データを表示するといったことをよくします。ぜひ覚えておいてください。



comments powered by Disqus