我目前正在一個項目上工作,其中一個要求是使用用戶的Windows登錄作爲他們的登錄MS Access,然後他們會在那裏點擊角色以獲得進入系統。我從來沒有這樣做過,但我已經在Access中建立了一個登錄屏幕,它從表格中提取數據。我有成功拉動用戶Windows登錄的代碼,但在此之後我遇到了麻煩。表名是tblUser,用戶是普通用戶,人力資源和管理員。目前,在該表中我有指定的號碼與一般用戶= 1,HR = 2的角色,管理員= 3MS 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表。最後,登錄,註銷,分配角色,根據登錄用戶讀取/驗證用戶角色的方法等。 –