●概要●
構文 expression.OpenArgs 取得のみ
設定項目 内容
expression Formオブジェクト[省略可能]
自身のフォームを開いたときのOpenFormメソッドの引数に指定された文字列を示します。を省略すると、自身のFormオブジェクトを指定したことになります。
このプロパティは、OpenFormメソッドを実行するプロシージャと組み合わせて使用します。次の例では、まず、「顧客入力フォーム」にある[顧客一覧フォームへ]ボタンのClickイベントプロシージャで、現在の「顧客NO」を引数に指定して、「顧客一覧フォーム」を開きます。これによって、「顧客一覧フォーム」のOpenArgsプロパティに「顧客NO」が設定されます。
●サンプル●
'フォームを開いてレコードを移動する 1
'顧客一覧フォームを開き、特定のレコードに移動する
Private Sub cmd顧客一覧_Click()
If IsNull(顧客NO) Then
'新規入力画面でClickイベント発生の場合
DoCmd.OpenForm "顧客一覧フォーム"
Else
'既存レコードでClickイベント発生の場合
DoCmd.OpenForm "顧客一覧フォーム", , , , , , 顧客NO.Value
End If
End Sub
次に、「顧客一覧フォーム」のOpenイベントプロシージャで、OpenArgsプロパティ値を元に「顧客NO」を検索し、目的のレコードにフォーカスを移動します。
'フォームを開いてレコードを移動する 2
'顧客一覧フォームを開き、特定のレコードに移動する
Private Sub Form_Open(Cancel As Integer)
'OpenArgsプロパティがNullでなければ
If Not IsNull(Me.OpenArgs) Then
'カレントフィールドを移動
DoCmd.GoToControl "顧客NO"
'目的のレコードに移動
DoCmd.FindRecord Me.OpenArgs
End If
End Sub
●実行結果●
顧客入力フォームで「顧客NO」を指定して、[顧客一覧フォームへ]ボタンをクリックする。顧客一覧フォームが自動的にスクロールして、指定した「顧客NO」のレコードが表示される。
●注意●
レコードを移動するためのFindRecordメソッドは、フォームのOpenイベントプロシージャに記述しています。すでに「顧客一覧フォーム」が開いている状態で実行した場合は、Openイベントが発生しないので、単にフォームにフォーカスが移動するだけで、レコードの移動は実行されません。