i used this code to protect my log in, but i had a problem with the password, for example i've two username and two password...when i used Username both of password can log in...can anyone help...here the code i used...
Private Sub cmdmsk_Click()
Dim UserLevel As Integer
Me.cmdmsk.SetFocus
If IsNull(Me.txtuser) Then
MsgBox "plis enter username", vbInformation, "Username needs to Login"
Me.txtuser.SetFocus
ElseIf IsNull(Me.txtpass) Then
MsgBox "plis enter you password", vbInformation, "Password needs to login"
Me.txtpass.SetFocus
Else
'process the job
If (IsNull(DLookup("UserLogin", "tblUser", "UserLogin ='" & Me.txtuser.Value & "'"))) Or _
(IsNull(DLookup("Password", "tblUser", "Password ='" & Me.txtpass.Value & "'"))) Then
MsgBox "wrong pass or username"
Else
UserLevel = DLookup("UserSecurity", "tblUser", "UserLogin = '" & Me.txtuser.Value & "'")
If UserLevel = "1" Then
MsgBox "Cangratulations ^_^"
DoCmd.Close
DoCmd.OpenForm "MENU"
Else
DoCmd.Close
DoCmd.OpenForm "INPUT"
End If
End If
End If
End Sub
Do one look up only:
Private Sub cmdmsk_Click()
Dim UserLevel As Variant
Me!cmdmsk.SetFocus
If IsNull(Me!txtuser.Value) Then
MsgBox "Please enter your username.", vbInformation, "Missing Username"
Me!txtuser.SetFocus
ElseIf IsNull(Me!txtpass.Value) Then
MsgBox "Please enter your password", vbInformation, "Missing Password"
Me!txtpass.SetFocus
Else
'process the job
UserLevel = DLookup("UserSecurity", "tblUser", _
"[UserLogin] = '" & Me!txtuser.Value & "' And [Password] = '" & Me!txtpass.Value & "'")
If IsNull(UserLevel) Then
MsgBox "Incorrect username or password.", vbInformation, "Login"
Else
If UserLevel = "1" Then
DoCmd.OpenForm "MENU"
Else
DoCmd.OpenForm "INPUT"
End If
DoCmd.Close
End If
End If
End Sub
Related
I am using the following VBA code:
Private Sub btnStatistics_click()
On Error GoTo Err_Handler
Dim strPasswd As String
strPasswd = InputBox("Please Enter Password", "Password Required")
If strPasswd = Format(Now, "Hh") * 2 Then
DoCmd.Close acForm, "frmCustomer", acSaveYes
DoCmd.OpenForm "frmStatistics", acNormal, "", "", acEdit, acNormal
Exit Sub
Else
MsgBox "Incorrect password!", vbOKOnly, "Password Info"
End If
Exit_This_Sub:
Exit Sub
Err_Handler:
MsgBox "Error #: " & Err.Number & " " & Err.Description
Resume Exit_This_Sub
End Sub
I am using this VBA code in many buttons in different forms to do different things. I want to move the part strPasswd = Format(Now, "Hh") * 2 into a module so I can update/change it in one place.
If it is only the test of the password that you want to move, create a Function that returns a Boolean:
Function PasswordOK(strPwd As String) As Boolean
PasswordOK = strPwd = Format(Now, "Hh") * 2
End Function
and then you can use it as:
If PasswordOK(strPasswd) Then
DoCmd.Close acForm, "frmCustomer", acSaveYes
DoCmd.OpenForm "frmStatistics", acNormal, "", "", acEdit, acNormal
'Exit Sub '<-- this isn't needed, because the next
' statement after this one is also Exit Sub
Else
MsgBox "Incorrect password!", vbOKOnly, "Password Info"
End If
Or, if appropriate, you could move even more of the code into the common routine by passing a few more parameters:
Sub ChangeForm(oldForm As String, newForm As String)
Dim strPasswd As String
strPasswd = InputBox("Please Enter Password", "Password Required")
If strPasswd = Format(Now, "Hh") * 2 Then
DoCmd.Close acForm, oldForm, acSaveYes
DoCmd.OpenForm newForm, acNormal, "", "", acEdit, acNormal
Else
MsgBox "Incorrect password!", vbOKOnly, "Password Info"
End If
End Sub
and use it as
Private Sub btnStatistics_click()
ChangeForm "frmCustomer", "frmStatistics"
End Sub
Or perhaps somewhere between the two, putting just the input of the password, and its testing, into the common routine:
Function PasswordOK() As Boolean
Dim strPasswd As String
strPasswd = InputBox("Please Enter Password", "Password Required")
If strPasswd = Format(Now, "Hh") * 2 Then
PasswordOK = True
Else
MsgBox "Incorrect password!", vbOKOnly, "Password Info"
PasswordOK = False
End If
End Function
and use it as
Private Sub btnStatistics_click()
On Error GoTo Err_Handler
If PasswordOK() Then
DoCmd.Close acForm, "frmCustomer", acSaveYes
DoCmd.OpenForm "frmStatistics", acNormal, "", "", acEdit, acNormal
End If
Exit_This_Sub:
Exit Sub
Err_Handler:
MsgBox "Error #: " & Err.Number & " " & Err.Description
Resume Exit_This_Sub
End Sub
I have a problem with Microsoft access for code I have written to lookup the USER TYPE field in the ADMINSTRATOR TABLE.It is not able to run due to syntax error 3075 missing expression operator in query expression 'USER TYPE'
It is used for my login menu to differentiate between two different user types and bring them to different forms.
The code works before I implemented the User Security code
Dim UserLevel As Integer
UserLevel = DLookup("USER TYPE", "ADMINSTRATOR TABLE", "USER ID = '" & Me.txtLoginID & "'")
Here is my code:
Private Sub Command1_Click()
Dim UserLevel As Integer
If IsNull(Me.txtLoginID) Then
MsgBox "Please enter Login ID", vbInformation, "Login ID Required"
Me.txtLoginID.SetFocus
ElseIf IsNull(Me.txtPassword) Then
MsgBox "Please enter Password", vbInformation, "Password Required"
Me.txtPassword.SetFocus
Else
If (IsNull(DLookup("[User ID]", "ADMINSTRATOR TABLE", "[User ID]='" & Me.txtLoginID.Value & "' And Password = '" & Me.txtPassword.Value & "'"))) Then
MsgBox "Incorrect Password or Login ID", vbInformation, "Login unsuccessful"
Else
UserLevel = DLookup("USER TYPE", "ADMINSTRATOR TABLE", "USER ID = '" & Me.txtLoginID & "'")
DoCmd.Close
If UserLevel = 1 Then
MsgBox "Login Success", vbInformation, "Login Success"
DoCmd.OpenForm "MAIN MENU"
Else
MsgBox "Login Success", vbInformation, "Login Success"
DoCmd.OpenForm "ADMINISTRATOR FORM"
End If
End If
End If
End Sub
Field names and table names containing spaces or special characters (poor design choice) need to surrounded with square brackets.
im using access 2007.
My login form has username and password and i want to pass value of the username from login form to menu form. my code as below
'Login Form'
Private Sub Command1_Click()
If IsNull(Me.txtUserName) Then
MsgBox "Please enter Username", vbInformation, "Username Required"
Me.txtUserName.SetFocus
ElseIf IsNull(Me.txtPassword) Then
MsgBox "Please enter Password", vbInformation, "Password Required"
Me.txtPassword.SetFocus
Else
'process login'
If (IsNull(DLookup("[Login_ID]", "Login_Detail", "[Login_ID] ='" & Me.txtUserName.Value & "' And password = '" & Me.txtPassword.Value & "'"))) Or _
(IsNull(DLookup("[Login_ID]", "Login_Detail", "[Login_ID] ='" & Me.txtUserName.Value & "' And password = '" & Me.txtPassword.Value & "'"))) Then
MsgBox "Incorrect"
Else
DoCmd.Close
DoCmd.OpenForm "Menu", acNormal, Me.txtUserName
End If
End If
End Sub
i put the code for the menu form
Me.Label4 = "Hi " & Me.OpenArgs & "!"
i would like the menu form automatically detect what is the username. Example
Hi John!!
The error says invalid argument. qWhere is the error in my code?
DoCmd.OpenForm "Menu", acNormal, Me.txtUserName
OpenArgs is not the third argument, it is the seventh, which may account for the error (the third argument is a filter):
DoCmd.OpenForm "Menu", acNormal, , , , , "Bob"
(or use named arguments)
then
MsgBox "Hello " & Me.OpenArgs
will work.
You can just store the username as a variable in your login form and set the message right after you open the menu:
'Login Form'
Private Sub Command1_Click()
Dim un As String
If IsNull(Me.txtUserName) Then
MsgBox "Please enter Username", vbInformation, "Username Required"
Me.txtUserName.SetFocus
ElseIf IsNull(Me.txtPassword) Then
MsgBox "Please enter Password", vbInformation, "Password Required"
Me.txtPassword.SetFocus
Else
un = Me.txtUserName
'process login'
If (IsNull(DLookup("[Login_ID]", "Login_Detail", "[Login_ID] ='" & Me.txtUserName.Value & "' And password = '" & Me.txtPassword.Value & "'"))) Or _
(IsNull(DLookup("[Login_ID]", "Login_Detail", "[Login_ID] ='" & Me.txtUserName.Value & "' And password = '" & Me.txtPassword.Value & "'"))) Then
MsgBox "Incorrect"
Else
DoCmd.Close
DoCmd.OpenForm "Menu", acNormal, Me.txtUserName
Forms!Menu!Label4 = "Hi " & un & "!"
End If
End If
End Sub
If it throws an error, move the DoCmd.Close to the end.
You have 2 possibilities.
call a Public sub in your menu form
In your Menu form, create the following sub :
Public Sub Pass_Login_Info(strUserName As String)
Me.Label4 = "Hi " & strUserName & "!"
End Sub
In the Login form, call the sub of the menu form like this :
DoCmd.OpenForm "Menu", acNormal
Form_Menu.Pass_Login_Info un
Use a Global variables to store the user info
It's the simpler and best approach to me because the Username is something that should be known and retrieved throughout all your application.
Just create a module, and in top of it add a public variable, that will be usable from anywhere
Public USER_NAME as string
In your login form :
USER_NAME = un
In the Load event of your Menu form
Private Sub Form_Load()
Me.Label4 = "Hi " & USER_NAME & "!"
End Sub
Option Compare Database
Private Sub Command1_Click()
Dim UserLevel As Integer
If IsNull(Me.txtLoginID) Then
MsgBox "Please enter LoginID", vbInformation, "LoginID Required"
Me.txtLoginID.SetFocus
ElseIf IsNull(Me.txtPassword) Then
MsgBox "Please enter Password", vbInformation, "Password Required"
Me.txtPassword.SetFocus
Else
'process the job
If (IsNull(DLookup("UserLogin", "tbluser", "UserLogin='" & Me.txtLoginID.Value & "'"))) Or _
(IsNull(DLookup("UserLogin", "tbluser", "Password='" & Me.txtPassword.Value & "'"))) Then
MsgBox "Incorrect LoginID or Password"
Else
UserLevel = DLookup("UserSecurity", "tbluser", "UserLogin = '" & Me.txtLoginID.Value & "'")
DoCmd.Close
If UserLevel = 1 Then
MsgBox "LoginID and Password correct"
DoCmd.OpenForm "ali"
Else
DoCmd.OpenForm "customer"
End If
End If
End If
End Sub
This is code for login form.I have created. When I close my MS Access and open again my project login form cannot work.
Im working on a form that sends an email on the click of a command button, but after the email is made the text boxes the user must fill in do not automatically clear out. I have provided the code I have below. Is there some other kind of clearing command I am missing maybe?
Thanks in advance :)
On Error GoTo errhandle
Me.Filter = "CurrentDate= #" & Format(Me!CurrentDate, "yyyy\-mm\-dd") & "# and DiscoverTime= '" & Me!DiscoverTime & "' and TailNumber= '" & Me!TailNumber & "' and FleetID= '" & Me!FleetID & "'"
Me.FilterOn = True
DoCmd.SendObject acSendForm, "frmETIC", acFormatPDF, "email", "", "", "Recovery Report", "Attached is the submitted Recovery Report"
exiterr:
Exit Sub
errhandle:
If Err.Number <> 2501 Then
MsgBox ("Email cancelled!")
End If
Resume exiterr
Me.CurrentDate = Null
Me.DiscoverTime = Null
Me.TailNumber = Null
Me.FleetID = Null
You are exiting the Sub before clearing. Try the following.
On Error GoTo errhandle
Me.Filter = "CurrentDate= #" & Format(Me!CurrentDate, "yyyy\-mm\-dd") & "# and DiscoverTime= '" & Me!DiscoverTime & "' and TailNumber= '" & Me!TailNumber & "' and FleetID= '" & Me!FleetID & "'"
Me.FilterOn = True
DoCmd.SendObject acSendForm, "frmETIC", acFormatPDF, "email", "", "", "Recovery Report", "Attached is the submitted Recovery Report"
Me.CurrentDate = vbNullString
Me.DiscoverTime = vbNullString
Me.TailNumber = vbNullString
Me.FleetID = vbNullString
exiterr:
Exit Sub
errhandle:
If Err.Number <> 2501 Then
MsgBox ("Email cancelled!")
End If
Resume exiterr