私は現在、MS Access 2016 内で作業しています。私が取り組んでいるプロジェクトの要件の 1 つは、ユーザーの Windows ログインを MS Access に結び付けることです。ユーザーの「ユーザー名」のみを取得しています。Access 内には、テーブル内のユーザーに設定されたアクセス許可があります。ユーザーがアクセス許可に基づいてログインすると、特定の開始ページに移動します。ユーザーの Windows ログインを正常に取得できましたが、バックエンド テーブルへの接続に問題があります。
私のテーブル名は tblUser です。フィールド名は次のとおりです。
FName LName postion UserName(PK) EmployeeType_ID
私が持っているコードは以下のとおりです。「rs.FindFirst "UserName = '」で実行時エラー「3077」「式の文字列の構文エラー」が発生しています。何が問題なのかわかりません。感謝。
Private Sub Form_Load()
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
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("tblUser", dbOpenSnapshot, dbReadOnly)
rs.FindFirst "UserName='"
If rs.NoMatch = True Then
MsgBox "You do not have access to this database.", vbInformation, "Access"
Exit Sub
End If
If rs!EmployeeType_ID = 4 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 "frmManager"
DoCmd.Close acForm
If rs!EmployeeType_ID = 3 Then
DoCmd.OpenForm "frmGeneral_User"
DoCmd.Close acForm
End If
If rs!EmployeeType_ID = 2 Then
DoCmd.OpenForm "frmAdmin"
DoCmd.Close acForm
End If
If rs!EmployeeType_ID = 1 Then
DoCmd.OpenForm "frmGuest"
DoCmd.Close acForm
End If
End Sub
ps Access 内に設定されたセキュリティ制御を誰かがバイパスできることを十分に理解しています。これは特に機能性のためです。