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

 



© 2019 | Анна Петросян | pashelp@yandex.ru