2017-04-09 8 views
-1

2つのMainWindowフォーム(管理者用とユーザ用)の2つのMS Accessデータベースアプリケーションを作成しました。このデータベースでは、テーブルを作成し、tbl_Usersを追加してUserLoginパスワードをadminとuserに追加します。この表では、管理者または共通のユーザーであると判断できる列があります。VBAでログインコードを作成するには?

我々は管理者のログインフォームを開き、ユーザーのuserloginのと管理者のパスワードを入力すると、我々は、(それぞれに固有のuserloginのパスワード付き)adminとtbl_usersでユーザーを持っている場合MainWindowが開き、「LoginIdまたはPasswordが正しくありません」というメッセージが表示されません。何が問題ですか?あなたは1つのコールだけ必要

Option Compare Database 

Private Sub Command1_Click() 
Dim userlevel As Integer 

If IsNull(Me.txtLoginID) Then 
    MsgBox "please insert ID", vbInformation, "LoginID required" 
    Me.txtLoginID.SetFocus 
ElseIf IsNull(Me.txtPassword) Then 
    MsgBox "Please inter Password", vbInformation, "Password required" 
    Me.txtPassword.SetFocus 
Else 
    'process the job 
    If (IsNull(DLookup("UserLogin", "tbl_Users", "UserLogin ='" & Me.txtLoginID.Value & "'"))) Or _ 
    (IsNull(DLookup("Password", "tbl_Users", "Password ='" & Me.txtPassword.Value & "'"))) Then 
    MsgBox "Incorrect LoginId or Password" 
Else 
    userlevel = DLookup("UserSecurity", "tbl_users", "userLogin = '" & Me.txtLoginID.Value & "'") 
    DoCmd.Close 
    If userlevel = 1 Then 
     'msgbox "LoginID and Password correct" 
     DoCmd.OpenForm "MainForm_final_admin" 
    Else 
     DoCmd.OpenForm "MainForm_final_user" 
    End If 
    End If 
End If 

End Sub 

答えて

3

Private Sub Command1_Click() 

    Dim userlevel As Variant 

    If IsNull(Me.txtLoginID) Then 
     MsgBox "please insert ID", vbInformation, "LoginID required" 
     Me.txtLoginID.SetFocus 
    ElseIf IsNull(Me.txtPassword) Then 
     MsgBox "Please inter Password", vbInformation, "Password required" 
     Me.txtPassword.SetFocus 
    Else 
     'process the job 
     userlevel = DLookup("UserSecurity", "tbl_Users", "UserLogin = '" & Me.txtLoginID.Value & "' And [Password] = '" & Me.txtPassword.Value & "'") 

     Select Case Nz(userlevel, -1) 
      Case -1 
       MsgBox "Incorrect LoginId or Password" 
       DoCmd.Close 
      Case 1 
       DoCmd.OpenForm "MainForm_final_admin" 
      Case Else 
       DoCmd.OpenForm "MainForm_final_user" 
     End Select 

    End If 

End Sub 
+0

が上の場所のコンパイラエラー取る "ケースがNULLである":予想:=または<>または>または<=または= < – user8344677

+0

私が」に変更しましたCase Is Null "を" Case Is = Null "に変更しましたが、最初の問題はまだあります。 – user8344677

+0

あなたはそうです、あなたはそのように_Null_をチェックすることはできません。 NzをNullを-1のような存在しないユーザレベルに変換するには、編集された答えを参照してください。 – Gustav

関連する問題