В настоящее время я работаю над проектом, поскольку одним из требований является использование входа в Windows пользователей в качестве их имени для доступа к MS Access, где они затем будут щелкать там роль, чтобы получить доступ к система. Я никогда не делал этого раньше, но я установил экран входа в Access, который извлекает данные из таблицы. У меня есть код, который успешно вытаскивает логины пользователей Windows, но после этого у меня возникают проблемы. Имя таблицы - tblUser, а пользователи - общий пользователь, HR и администратор. В настоящее время в таблице у меня есть роли, назначенные номера с General User = 1, HR = 2, Admin = 3.Управление доступом на основе ролей, используемое в MS Access
The Login Screen:
Log On
General User
HR
Admin
Code that pulls the user information:
Private Sub Form_Load()
Stop
Debug.Print Environ("UserName")
Debug.Print Environ$("ComputerName")
Dim strVar As String
Dim i As Long
For i = 1 To 255
strVar = Environ$(i)
If LenB(strVar) = 0& Then Exit For
Debug.Print strVar
Next
End Sub
Ниже приведен код, который я построил для моего входа в экран в прошлом. Извлекая все, кажется, что это будет тот же процесс, но я не уверен. Есть ли что-то, что я могу сделать с кодом ниже?
Private Sub btnLogin_Click()
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("tblUser", dbOpenSnapshot, dbReadOnly)
rs.FindFirst "UserName='" & Me.txtUserName & "'"
If rs.NoMatch = True Then
Me.lblWrongUser.Visible = True
Me.txtUserName.SetFocus
Exit Sub
End If
Me.lblWrongUser.Visible = False
If rs!Password <> Nz(Me.txtPassword, "") Then
Me.lblWrongPass.Visible = True
Me.txtPassword.SetFocus
Exit Sub
End If
Me.lblWrongPass.Visible = False
If rs!EmployeeType_ID = 3 Then
Dim prop As Property
On Error GoTo SetProperty
Set prop = CurrentDb.CreateProperty("AllowBypassKey", dbBoolean, False)
CurrentDb.Properties.Append prop
SetProperty:
If MsgBox("Would you like to turn on the bypass key?", vbYesNo, "Allow Bypass") = vbYes Then
CurrentDb.Properties("AllowBypassKey") = True
Else
CurrentDb.Properties("AllowBypassKey") = False
End If
End If
DoCmd.OpenForm "frmPersonal_Information"
DoCmd.Close acForm, Me.Name
End Sub
Надеюсь, этого достаточно для того, что я пытаюсь выполнить. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Спасибо.
Экран входа для нерасширенного доступа - это шутка. В любом случае, как и все модели членства/ролей, вам нужно иметь таблицу пользователей, таблицу ролей, таблицу user_vs_roles. Наконец, методы входа в систему, выхода из системы, назначения ролей, чтения/проверки роли пользователя против зарегистрированного пользователя и т. Д. –