Передача параметров между формами в MS Access - PullRequest
15 голосов
/ 13 августа 2010

Я создал форму входа с именем login, где имя пользователя вводится в текстовое поле txtEmployee, и мне нужно отобразить его на второй странице в другой форме в MS Access.

Ответы [ 5 ]

26 голосов
/ 13 августа 2010

DoCmd.OpenForm позволяет передавать произвольное значение в качестве последнего параметра.Это значение может быть доступно в новой форме как Me.OpenArgs:

' Invoked by some Button on the first form '
Sub GoToSecondPage()
    DoCmd.OpenForm "MySecondPage", acNormal, , , , , txtEmployee.Value
End Sub

' Second form '
Sub Form_Open(Cancel As Integer)
    If Not IsNull(Me.OpenArgs) Then
        lblShowEmployeeName.Value = Me.OpenArgs
    End If
End Sub

(пример кода не проверен).

6 голосов
/ 23 июня 2011

Вы можете передать строку с разделителями в качестве параметра OpenArgs:

DoCmd.OpenForm FormName:="miscForm", OpenArgs:=paramstring

Вот процедура для обработки строки с разделителями, переданной в качестве параметра DoCmd.OpenForm:

Dim Pstring As Variant

If Len(Me.OpenArgs) > 0 Then
   Pstring = Split(Me.OpenArgs, "|")
   var1 = Pstring(0)
   <etc..>
End If
4 голосов
/ 13 августа 2010

Лично я бы передавал их через открытые аргументы при открытии формы.Например, из формы A вы могли бы написать

DoCmd.OpenForm "frmB", , , , , acDialog,”Badger”

И затем в событии OnOpen формы B вы можете захватить то, что вы отправили вот так

Me.txtSomething=Me.OpenArgs

Вы можете передать только одну вещьоднако, что я часто делаю, так это передаю строку с разделителем канала в аргументах open, а затем разделяю ее.

0 голосов
/ 16 августа 2010

Почему бы не создать публичную функцию, которая хранит и / или извлекает глобальную переменную, которую вы сохраняете после выполнения первой формы?Это позволит вам использовать его не только в одной или нескольких формах, но и в качестве критерия в запросе (например, для возврата записей, которые соответствуют сохраненному вами имени пользователя).«фальшивая» безопасность, но бывают случаи, когда этого достаточно для ваших нужд.Я реализовал это раньше, где я сопоставляю имя пользователя строки среды с записью в пользовательской таблице.

Кстати, я называю эту функцию персонализацией, а не безопасностью.

Просто мысль.

0 голосов
/ 13 августа 2010

Пара идей ...

Используйте событие AfterUpdate в поле имени пользователя для входа, чтобы записать имя в глобальную переменную, а затем заполните поле на второй странице событием OnLoad.

Или, если вы планируете оставлять форму входа в систему открытой в любое время, вы можете установить значение поля по умолчанию непосредственно на = [Forms]! [LogInForm]! [UserName]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...