1
現在表示されているデータベーステーブルとフォームがユーザー権限に基づいているDBを構築しています。ユーザーにデータベースへのアクセス許可がない場合、「このデータベースにアクセスできない」というメッセージボックスが表示されます。このコードは、ユーザーがログインボタンを押すだけでログイン画面内で実行されます。私が抱えている問題は、ユーザーに権限があるときにメッセージボックスが表示されることです。ユーザーがメッセージボックスとやり取りすると、対応するフォームにリダイレクトされます。このメッセージボックスは、ユーザーに権限がなく、DBが閉じるメッセージボックスとやり取りする場合にのみ表示されます。どんな助けでも大歓迎です。VBA - ログイン画面の後に表示されるメッセージボックス
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 = '" & EmployeeType_ID & "'"
If rs.NoMatch = True Then
MsgBox "You do not have access to this database.", vbInformation, "Access"
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
If rs!EmployeeType_ID = 4 Then
DoCmd.OpenForm "frmManager"
DoCmd.Close acForm, "frmLogin", acSaveNo
End If
If rs!EmployeeType_ID = 3 Then
DoCmd.OpenForm "frmAssistant_Manager"
DoCmd.Close acForm, "frmLogin", acSaveNo
End If
If rs!EmployeeType_ID = 2 Then
DoCmd.OpenForm "frmLead"
DoCmd.Close acForm, "frmLogin", acSaveNo
End If
If rs!EmployeeType_ID = 1 Then
DoCmd.OpenForm "frmGeneral_User"
DoCmd.Close acForm, "frmLogin", acSaveNo
End If
End Sub
はusername = EmployeeType_IDですか? –
@ Nathan_Savいいえ、そのユーザー名はWindowsのログイン名です。 EmployeeType_IDは、管理者がそれぞれの対応するフォームを持つ1-4のいずれかのユーザー権限を割り当てるテキストフィールドです。 – Orange56
これは私の推測ですが、その検索をWindowsログオンに設定する必要があります –