MS Access | Передаваемые параметры открытия формы |
Параметр OpenArgs С помощью параметра OpenArgs можно передавать какие-либо значения другим формам. Для этого команде Docmd.OpenForm нужно указать значение последнему параметру открытия формы:
Команда открытия формы с передачей любого параметра с помощью OpenArgs, пример:
DoCmd.OpenForm "FORM_NAME", , , , , , Me.ID.value
Например, можно передать новой форме "язык базы данных":
DoCmd.OpenForm "FormName", , , , , , "English"
После чего на событие открытия формы FormName можно в зависимости от того, что содержит в себе OpenArgs прописать условие, например:
Private Sub FormName_Open(Cancel As Integer) If Me.OpenArgs = "English" Then Me.Label1.Caption = "Имя" Me.Label3.Caption = "Фамилия" Else Me.Label1.Caption = "First Name" Me.Label3.Caption = "Last Name" End If End Sub
См. пример применения OpenArgs на передаче языка базы данных
Пример передачи двух/трёх/... значений в один OpenArgs (с помощью конкатенации) и присвоения значений, взятых из OpenArgs с помощью Split, полям формы:
На событие перехода из одной формы в другую:
Private Sub open_decision_list_Click() If Not IsNull(Me.FIELD_NAME_1) Then DoCmd.OpenForm ("FORM_NAME"), , , , , , CStr(Me.FIELD_NAME_1) & "|" & CStr(Me.FIELD_NAME_2) Else DoCmd.OpenForm ("FORM_NAME") End If End Sub
На событие открытия формы перехода:
Private Sub Form_Open(Cancel As Integer) If Not IsNull(Me.OpenArgs) Then Dim ArgsArr() As String ArgsArr = Split(Me.OpenArgs, "|") Me.FIELD_NAME_1.value = CInt(ArgsArr(0)) If (ArgsArr(1)) <> "" Then Me.FIELD_NAME_2.value = CInt(ArgsArr(1)) End If Requery Refresh End If Me.Requery Refresh End Sub
|