2016-12-08 7 views
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 
+1

はusername = EmployeeType_IDですか? –

+0

@ Nathan_Savいいえ、そのユーザー名はWindowsのログイン名です。 EmployeeType_IDは、管理者がそれぞれの対応するフォームを持つ1-4のいずれかのユーザー権限を割り当てるテキストフィールドです。 – Orange56

+0

これは私の推測ですが、その検索をWindowsログオンに設定する必要があります –

答えて

0

私はデータベース内で自分の問題を修正しました。私は置き換えました:

と私のメッセージボックスの下に私がAccess.Quitを配置したので、ユーザがメッセージボックスとやりとりしたときに閉じます。

関連する問題