Connecting Tech Pros Worldwide Forums | Help | Site Map

Help with For...Next Loop and Other Questions

JodiPhillips's Avatar
Newbie
 
Join Date: May 2007
Location: Australia
Posts: 26
#1: May 28 '07
Hello All,

I'm trying to limit the number of attempts a user has to log into an MS Access 2003 database, but am having very little success.

My current code for log in is as follows (and thanks to all previous posters whose ideas and code I have taken from these forums to get me this far!!)

UserId comes in from a combo box also on the same form, the focus is then shifted to the password textbox for password entry and then the user clicks on the command button below.

Expand|Select|Wrap|Line Numbers
  1. Private Sub cmdLogOn_Click()
  2. Dim sPswd As String
  3.  
  4.  
  5.         If IsNull(Me!cboUserID) = True Or IsNull(Me!txtPass) = True Then
  6.             MsgBox "please enter a valid userid and password"
  7.             Exit Sub
  8.         End If
  9.  
  10.         sPswd = Nz(DLookup("txtpword", "tblLogIn", "txtUserID='" & Me!cboUserID & " ' "), "")
  11.         Debug.Print sPswd
  12.  
  13.         If Me!txtPass <> sPswd Then
  14.             MsgBox "Invalid UserID/Password", vbOKOnly, "Try Again"
  15.             Exit Sub
  16.         End If
  17.  
  18.  
  19. DoCmd.Close acForm, "frmLogOn", acSaveNo
  20. DoCmd.OpenForm ("Start Form CL&D")
  21.  
  22. End Sub
I'm not sure where to put the For statement. I have tried at various points but end up with a lost Next statement, or the users have no limits to the number of attempts.

My tentative For code is as follows:

Expand|Select|Wrap|Line Numbers
  1. Dim intAttempts as integer
  2.  
  3. For intAttempts = 0 to 3 Step 1
  4. Next intAttempts
  5.  
  6. If intAttempts > 3 Then
  7. MsgBox "You do not have authority to access this database. Contact your support team",vbcritical,"Restricted Access!"
  8. Application.Quit
  9. End If
  10.  
Can anyone point me in the right direction on where the various For...Nexts should go, or if I am missing something from the code or using the wrong type of loop? Any help with this will be much appreciated. I've read through the help files within access on the loops and its still not clear to me.

Also, I want to AllowBypasskey = False in a procedure(? if that is the correct thing to call it) so that users cannot just Shift-Click into the database - I have a splash set up that is in pop up mode on start up and I want users to move through pages and forms in a specific direction. To disable the bypass do I have to do a create procedure before I can change it? And do I do this as a new module?

Another thing I would like to do is if the database is opened in anyway by anyone or attempt to open I would like to send an email to myself as soon as it is accessed. I can't set a password on the database for a number of reasons, but would like an audit trail of when the database is opened not just logged into. Is this doable? If so, could anyone point me in the how to direction so that I can research it. I don't know where to start looking for info on this one.

Last question - yes I know I'm being greedy, but this should be enough to keep me to browsing for the next six months I promise *wink*,

I want to run a query off the value in txtpass (as above) but if I put [Forms!].[frmLogOn!].[txtpass].[Afterupdate] into the criteria line for the query it gives me a parameter box to complete. Is there a way to specify the value thats entered at login (during the execution of the code above) directly into the query without the user having to reenter their userid? The query basically just runs off and grabs records from a table for their team members.

Many thanks =)

Jodi

nico5038's Avatar
Moderator
 
Join Date: Nov 2006
Location: The Netherlands
Posts: 2,232
#2: May 28 '07

re: Help with For...Next Loop and Other Questions


You don't need various for next loops.

Just define before all sub's in the form's code your login counter like:

Expand|Select|Wrap|Line Numbers
  1. dim intLogins as Integer
  2.  
  3. ' Now in the login code use
  4.  
  5. sub Login()
  6.  
  7. intLogins = intLogins + 1
  8.  
  9. IF intLogins > 3 then 
  10.     msgbox "No more logins"
  11.     docmd.quit
  12. endif
  13.  
  14. ' herethe other code for testing
  15.  
  16. end sub
  17.  
Getting the idea ?

Nic;o)
JodiPhillips's Avatar
Newbie
 
Join Date: May 2007
Location: Australia
Posts: 26
#3: May 29 '07

re: Help with For...Next Loop and Other Questions


Nic,

That did the trick, just copied the sub that you provided and called it from within the logon sub.

Many many thanks!

Jodi
nico5038's Avatar
Moderator
 
Join Date: Nov 2006
Location: The Netherlands
Posts: 2,232
#4: May 29 '07

re: Help with For...Next Loop and Other Questions


Glad I could help, success with your application !

Nic;o)
Reply