ник: Дядя Федор
Просто передать значения из формы в форму просто. Здесь речь идет, как я понимаю, о приостановке выполняемого кода на время ввода данных и передаче данных переменным в модуль формы.
Не круто, но работает такой код.
В первой форме надо изменить значения x,y,z
Поля 1,2,3 для слежения за x,y,z
Во второй форме(ввода) те же поля 1,2,3
'1форма "япример1"
Option Compare Database
Private x As Long
Private y As Long
Private z As Long
Private flag As Boolean
Private Sub BtnMyProc_Click()
Dim i As Integer 'просто демонстрируем вызов окна ввода в цикле на 5-м шаге
For i = 1 To 10
flag = False
Me.Caption = "step=" & i ' следим за ходом выполнения
If i = 5 Then
Me.Caption = "На шаге " & i & " вызвали окно ввода"
DoCmd.OpenForm "япример2", , , , , acDialog
While Not flag 'ждем отработки окна ввода, flag вернется из нее
DoEvents
Wend
End If
Next i
End Sub
Private Sub Form_Open(Cancel As Integer)
x = 1: y = 2: z = 3 'для примера
MyNewValue
End Sub
Public Property Let NEWX(vx As Long)
x = vx
MyNewValue
End Property
Public Property Let NEWY(vx As Long)
y = vx
MyNewValue
End Property
Public Property Let NEWZ(vx As Long)
z = vx
MyNewValue
End Property
Public Property Let NEWFLAG(vx As Long)
flag = vx
End Property
Public Sub MyNewValue()
Поле1 = x 'показали измененные значения
Поле2 = y
Поле3 = z
End Sub
'2форма ввода "япример2"
Private Sub btnok_Click()
''следующие три строки можно повесить на события обновления соотв. полей
Forms("япример1").NEWX = (Поле1)
Forms("япример1").NEWY = (Поле2)
Forms("япример1").NEWZ = (Поле3)
'мы закончили - передаем flag
Forms("япример1").NEWFLAG = (True)
DoCmd.Close acForm, Me.Name
End Sub
Передавать переменные можно и по-другому. суть в приостановке...
Конечно, если значений для передачи много ...