Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

Вы можете передать строку с разделителями как параметр 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

Ответ 3

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

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

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

Me.txtSomething=Me.OpenArgs

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

Ответ 4

Несколько идей...

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

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

Ответ 5

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

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

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

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