При установке разрешений пользователя на открытие определенной формы для определенного пользователя я получаю сообщение об ошибке выполнения из инструкции DLookup. - PullRequest
0 голосов
/ 27 мая 2020

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

Сообщение об ошибке в это случай: Ошибка времени выполнения «2471»: выражение, которое вы ввели в качестве параметра запроса, вызывало эту ошибку: «Запас». Когда я go для отладки, он приводит меня к DLookup, и я не вижу, что не так.

Наблюдайте за выражением: Watch:: "Employeeaccesstype =" & cable & "" & "AND FormName =" & thisform : "Employeeaccesstype = 0 AND FormName = Stock": String: Form_Stock.Form_Load

Private Sub Form_Load()
Dim cable As String
cable = TempVars("AccessType")
Dim thisform As String
thisform = Me.Form.Name
If DLookup("Hasaccess", "tblemployeeaccess", "Employeeaccesstype =" & cable & " " & "AND FormName=" & thisform) = False Then
DoCmd.Close
MsgBox "You Do Not Have Access"
End If
End Sub

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

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

Я изменил тактику и выбрал другой подход. Я создал новую таблицу для хранения данных для входа в систему и запроса на объединение данных в таблицах и сослался на это в Dlookup, а не пытался ссылаться на форму входа через переменную. С этими изменениями я изменил DLookup на

If DLookup("Hasaccess", "AccessQuery", "HasAccess =false and Formname = 'Part' ") = 
False Then
DoCmd.Close
MsgBox "You Do Not Have Access"

End If

Теперь он работает правильно. Большое спасибо Applecore за помощь в решении этой проблемы

0 голосов
/ 27 мая 2020

Если ваши поля Employeeaccesstype и FormName являются текстовыми, то значения в Dlookup необходимо заключить в одинарные кавычки. Кроме того, вы должны учитывать возможность того, что запись не существует в таблице (возвращая значение Null из DLookup):

If Nz(DLookup("Hasaccess", "tblemployeeaccess", "Employeeaccesstype ='" & cable & "' AND FormName='" & thisform & "'"),False) = False Then

Вам также следует подумать о том, чтобы фактически не разрешать им открывать форму в первое место.

С уважением,

...