daintysally
asked on
User login form not functioning properly
Hi Experts,
I am attempting to create a user login form in access '07. The code that I have so far is not erroring out, however, it is not doing what I want it to do. It is a relatively simple login form. The user opens the db and a login form is loaded. The user will select their username from the combo box and then focus is placed on the password field. The user enters in an assigned pwd given to them by the administrator. When the user clicks on login, the code should compare the pwd string in the textbox to the adminassigned pwd on the users table. The code is not doing that and it is not erroring out. The 'Users' table has the following columns: username, password, assignedpassword and confirm password. Can someone take a look at my code and tell me what I am missing? Thanks!!
I am attempting to create a user login form in access '07. The code that I have so far is not erroring out, however, it is not doing what I want it to do. It is a relatively simple login form. The user opens the db and a login form is loaded. The user will select their username from the combo box and then focus is placed on the password field. The user enters in an assigned pwd given to them by the administrator. When the user clicks on login, the code should compare the pwd string in the textbox to the adminassigned pwd on the users table. The code is not doing that and it is not erroring out. The 'Users' table has the following columns: username, password, assignedpassword and confirm password. Can someone take a look at my code and tell me what I am missing? Thanks!!
Option Compare Database
Const NumLoginAttempts = 3
Dim Attempts As Integer
Private Sub Cbousername_AfterUpdate()
'If a username is selected, then place the focus on the password field.
If Not IsNull(Me.Cbousername) Then
Me.txtPwd.SetFocus
Me.CmdLogin.Enabled = True
End If
End Sub
Private Sub CmdLogin_Click()
'Check to make sure that there are characters in the txtpwd field
'If not, display message telling user that a password must be entered and place focus back on the password box
If IsNull(Me.txtPwd) Then
MsgBox "You must enter a password.", vbExclamation + vbOnly, "Required Entry"
Me.txtPwd.SetFocus
End If
'Validate password for user
If Me.txtPwd.Value = DLookup("Password", "Users", "[ID]=" & Me.Cbousername.Value) Then
ID = Me.Cbousername.Value
'Close the login form and open frmMain
DoCmd.Close acForm, "FrmLogin", acSaveNo
DoCmd.OpenForm "frmMain"
End If
If Me.txtPwd.Value <> DLookup("Password", "Users", "[ID]=" & Me.Cbousername.Value) Then
MsgBox "The password you entered does not match the username selected.", vbExclamation + vbOnly, "Try Again"
Me.txtPwd = ""
Me.txtPwd.SetFocus
Attempts = Attempts + 1
'After 3 tries, the db will close
If Attempts > 3 Then
MsgBox "Maximum number of attempts reached. Please contact administrator to reset your password.", vbExclamation + vbOKOnly, "Database Shutdown"
DoCmd.CloseDatabase
Exit Sub
Else
'Compare txtpwd field value to the assignedpassword value for the user that is logging in
'If the password that the user types in matches the assignedpassword in tblusers, then have the user create a new password
If Me.txtPwd.Value = DLookup("AssignedPassword", "Users", "[ID]=" & Me.Cbousername & " Or [Password] Is null") Then
MsgBox "You must enter a new password.", vbExclamation + vbOKOnly, "Invalid Password"
Me.LblPwd.Visible = False
Me.txtPwd.Visible = False
Me.LblNewPwd.Visible = True
Me.TxtNewPwd.Visible = True
Me.TxtNewPwd.SetFocus
End If
End If
End If
End Sub
> "The code is not doing that"
What exactly is the code not doing?
- will the sub cmdLogin_Click not get called ?
- will the code not ask you for a password, when you entered none ?
- will the code not open "frmMain", when you gave the correct password ?
- will the code not warn you if you gave a wrong password ?
The best way to find the culprit: set a breakpoint on the start of Sub cmdLogin_Click and step through your code ;-)
PS:
I would guess that "frmMain" will not open, as you are closing this form first, so it will never reach the second line.
DoCmd.Close acForm, "FrmLogin", acSaveNo
DoCmd.OpenForm "frmMain"
What exactly is the code not doing?
- will the sub cmdLogin_Click not get called ?
- will the code not ask you for a password, when you entered none ?
- will the code not open "frmMain", when you gave the correct password ?
- will the code not warn you if you gave a wrong password ?
The best way to find the culprit: set a breakpoint on the start of Sub cmdLogin_Click and step through your code ;-)
PS:
I would guess that "frmMain" will not open, as you are closing this form first, so it will never reach the second line.
DoCmd.Close acForm, "FrmLogin", acSaveNo
DoCmd.OpenForm "frmMain"
ASKER
the code does not work as it should at this point:
'Compare txtpwd field value to the assignedpassword value for the user that is logging in
'If the password that the user types in matches the assignedpassword in tblusers, then have the user create a new password
If Me.txtPwd = DLookup("AssignedPassword" , "Users", "[ID]=""" & Me.Cbousername & """) Or DLookup("Password", "Users", "[ID]=""" & Me.Cbousername & """") = "" Then
MsgBox "You must enter a new password.", vbExclamation + vbOKOnly, "Invalid Password"
Me.LblPwd.Visible = False
Me.txtPwd.Visible = False
Me.LblNewPwd.Visible = True
Me.TxtNewPwd.Visible = True
Me.TxtNewPwd.SetFocus
'Compare txtpwd field value to the assignedpassword value for the user that is logging in
'If the password that the user types in matches the assignedpassword in tblusers, then have the user create a new password
If Me.txtPwd = DLookup("AssignedPassword"
MsgBox "You must enter a new password.", vbExclamation + vbOKOnly, "Invalid Password"
Me.LblPwd.Visible = False
Me.txtPwd.Visible = False
Me.LblNewPwd.Visible = True
Me.TxtNewPwd.Visible = True
Me.TxtNewPwd.SetFocus
ASKER
when I enter in the password that is equivalent to the assigned password, the code should prompt me to enter a new password and it does not. Everything else works as it should.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Open in new window