Передача параметров между формами в MS Access

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

16
задан Lance Roberts 22 June 2011 в 20:51
поделиться

4 ответа

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

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

27
ответ дан 30 November 2019 в 16:36
поделиться

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

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

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

Me.txtSomething=Me.OpenArgs

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

4
ответ дан 30 November 2019 в 16:36
поделиться

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

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

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

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

0
ответ дан 30 November 2019 в 16:36
поделиться

Пара идей ...

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

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

0
ответ дан 30 November 2019 в 16:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: