Solved

Limit number of records for each person filling out a form

Posted on 2014-12-19
5
115 Views
Last Modified: 2014-12-19
I have a form which users use to enter records.  For each person filling out the form they are "assigned" a userID automatically which is a text ID.    The table also of course has a RecordID autonumber field.

Anyway, as the user is filling out the form, which is really a sub-form (continuous form), and have entered 5 records and attempt to enter a 6th record, I want a message to popup informing them that they can't enter any more records.

Something like this but I don't know how to qualify the userID:

Private sub Form_BeforeInsert(Cancel as Integer)
If Me.txtCount > 5 Then
    Cancel = True
    Me.Undo
    Msgbox "Please return a book before checking out a new one", vbOKOnly
End If
End Sub

Open in new window

0
Comment
Question by:SteveL13
  • 2
  • 2
5 Comments
 
LVL 18

Expert Comment

by:Simon
ID: 40509140
It sounds like there are some other elements of the business rules missing from this. What if the user already has 1 or more books when they start filling out this form?

Ideally, you'd want to warn them that they can't fill it out again BEFORE they do so rather than undoing it after they've filled it in.
0
 
LVL 34

Expert Comment

by:PatHartman
ID: 40509197
Ideally, you'd want to warn them that they can't fill it out again BEFORE they do so rather than undoing it after they've filled it in.
The BeforeInsert event runs after the FIRST character is typed into a new record so the user hasn't expended any energy at this point.  This is the correct event to use.

Use DCount() instead of a saved count field.  Saving counts, sums, etc. causes data anomalies and requires extreme care to keep in sync with the actual count or sum.  It also must be handled at the form level and that means that queries or outside updates from another source such as a web app aren't counted.  violating normal forms is poor practice and should only be done in unique situations and with full knowledge of the potential consequences.
0
 

Author Comment

by:SteveL13
ID: 40509202
I understand but I still don't know how to set the limit per UserID

Something like: (which isn't right of course)

Private sub Form_BeforeInsert(Cancel as Integer)
If Me.txtCount > 5 PERUSERIDThen
    Cancel = True
    Me.Undo
    Msgbox "Please return a book before checking out a new one", vbOKOnly
End If
End Sub
0
 
LVL 34

Accepted Solution

by:
PatHartman earned 500 total points
ID: 40509272
If Dcount("*", "yourtable", "UserID = " & Me.UserID) > 5 Then
     Cancel = True
     Me.Undo
     Msgbox "Please return a book before checking out a new one", vbOKOnly
 End If

Open in new window


Domain functions take a "where" argument so you can limit the records selected.
0
 

Author Comment

by:SteveL13
ID: 40509408
Pat... Nice!  Thanks.  That did it.
0

Featured Post

Ransomware-A Revenue Bonanza for Service Providers

Ransomware – malware that gets on your customers’ computers, encrypts their data, and extorts a hefty ransom for the decryption keys – is a surging new threat.  The purpose of this eBook is to educate the reader about ransomware attacks.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

In Debugging – Part 1, you learned the basics of the debugging process. You learned how to avoid bugs, as well as how to utilize the Immediate window in the debugging process. This article takes things to the next level by showing you how you can us…
Regardless of which version on MS Access you are using, one of the harder data-entry forms to create is one where most data from previous entries needs to be appended to new records, especially when there are numerous fields and records involved.  W…
Familiarize people with the process of utilizing SQL Server views from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Access…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

947 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now