Существует ли простой код, позволяющий определенным пользователям получать доступ к командным кнопкам? - PullRequest
0 голосов
/ 30 октября 2019

Хорошо, у меня проблемы с кодированием безопасности в моей форме пользователя. Позвольте мне дать вам, ребята, краткое изложение. Я создал эту таблицу make "tblPermissionTypes", в которой есть два поля: "ID" и "EmployeeType_ID". Поле ID представляет уровень безопасности доступа от 0 до 2, а EmployeeType_ID - это заголовок: 0 = Запросчик, 1 = Администратор и 2 = Принтер.

С учетом сказанного, у меня есть еще одна таблица "tblEmployees" сВ том же поле «EmployeeType_ID» я вручную устанавливаю 0, 1 и 2. Эта таблица также содержит всех сотрудников. Имена пользователей

Наконец, у меня есть еще одна таблица "tblPermission", которая содержит три поля: "EmployeeType_ID", "FormName" и "HasAccess"

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

Private Sub cmdClick_Click()

Dim strSQL As String
Dim permission As String

If permission = ("fOSUserName") = True Then
Run strSQL
strSQL = "SELECT * FROM tblEmployees WHERE "
strSQL = strSQL & "tblEmployees.Five2 =" & ("fOSUserName") & """, = False 
Then

MsgBox "You do not have permission!", vbExclamation

Else'
cmdButton.Visible True

End If

NOTE: fOSUserName, is a function I created basically the same thing as 
Environ("UserName") 


Debug.Print strSQL

1 Ответ

0 голосов
/ 01 ноября 2019

Вызовы функций не должны быть в кавычках. Вы создаете оператор SQL, но затем не используете его должным образом. Вы объявляете и используете переменную permission, но не устанавливаете переменную - это пустая строка. Нужно имя формы в качестве критерия поиска. Пара других синтаксических ошибок, но они исчезнут с этим предложенным кодом. Запустите этот код в форме «Открыть событие», чтобы отключить кнопку и даже не дать возможность неавторизованным пользователям нажать. Не раздражайте их всплывающим сообщением, которое подчеркивает их низкий статус в иерархии.

Вам необходимо создать запрос, который соединяет tblEmployees с tblPermission, чтобы все поля UserName, FormName, HasAccess были доступны, а затем ссылались на этот запрос впоиск разрешения.

DLookup может служить здесь.

Me.buttonNameHere.Visible = Nz(DLookup("HasAccess", "queryNameHere", _
     "UserName='" & fOSUserName & "' AND FormName='FormNameHere'"), 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...