Я создал форму входа с именем login, в которой имя пользователя вводится в текстовое поле txtEmployee, и мне нужно отобразить то же самое на второй странице в другой форме в MS Access.
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
(Пример кода не протестирован.)
Лично я бы передал их через открытые аргументы при открытии формы. Например, из формы A вы должны написать
DoCmd.OpenForm "frmB", , , , , acDialog,”Badger”
А затем в событии OnOpen формы B вы можете захватить то, что вы отправили, как это
Me.txtSomething=Me.OpenArgs
Вы можете передать только одну вещь, однако то, что я делаю часто, - это передача строки с разделителями в открытых аргументах, а затем разбейте это на части.
Почему бы не создать общедоступную функцию, которая хранит и / или извлекает глобальную переменную, которую вы сохраняете после первая форма выполнена? Это позволит вам использовать его не только в одной или нескольких формах, но и в качестве критериев в запросе (например, для возврата записей, соответствующих сохраненному вами имени пользователя).
Я согласен, что это «фальшивая» защита, но бывают случаи, когда ее достаточно для ваших нужд. Я реализовал это раньше, когда я сопоставляю имя пользователя строки среды с записью в таблице пользователей.
Кстати, я называю эту функцию персонализацией, а не безопасностью.
Просто мысль.
Пара идей ...
Используйте событие AfterUpdate в поле имени пользователя для входа в систему, чтобы записать имя в глобальную переменную, а затем заполните поле на второй странице событием OnLoad.
Или, если вы планируете постоянно оставлять форму журнала открытой, вы можете установить значение поля по умолчанию непосредственно на = [Forms]! [LogInForm]! [UserName]