2017年9月14日

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



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

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


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



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


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

親フォーム
1
2
3
4
5
6
7
8
9
10
11
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

子フォーム
1
2
3
4
5
6
7
8
9
Private Sub Form_Load()
     
    If IsNull(Me.OpenArgs) = False Then
     
        Me.textName.Value = Me.OpenArgs
     
    End If
 
End Sub

1
2
3
4
5
Private Sub buttonExit_Click()
 
    DoCmd.Close acForm, Me.Name
 
End Sub


では実行してみます。


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

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



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


解説

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

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



スポンサーリンク



Follow Me on Pinterest
Clip to Evernote