2

私は現在、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 内に設定されたセキュリティ制御を誰かがバイパスできることを十分に理解しています。これは特に機能性のためです。

4

1 に答える 1