"Don't know about you but my users would linch me." I would place that in the category of "Strong arguments for checking for duplicates early on". ;-)
Seriously though, the reason I mentioned BeforeUpdate for the form was because Dawn sounded like he was currently cross-checking all fields in determining duplicates. But to be sure, a user might not like you very much if you could have programmed to check for duplicates after filling in two fields instead of the entire form. Good point, Toby ~ ----- Original Message ----- From: "Robin" <[EMAIL PROTECTED]> To: <AccessDevelopers@yahoogroups.com> Sent: Sunday, October 02, 2005 12:39 AM Subject: [AccessDevelopers] Re: Getting Duplicate Records > Hello Toby, > > Oops, that'll teach me to read your messages better than I did. I > was assuming the before update of each text box where in fact you > had stated the before update of the form. > > This means however that the user has filled in all that information > before the condition has been tested. Don't know about you but my > users would linch me. > > Bound forms are great things but I find unbound forms have more > manipulation control for me, after all you only have to write the > code once. > > Regards > Robin. > > > > --- In AccessDevelopers@yahoogroups.com, "Toby Bierly" <[EMAIL PROTECTED]> > wrote: > > Sure it will. That is what BeforeUpdate is for. You can do all > your > > checking for duplicates in BeforeUpdate comparing what is in the > text boxes > > on the form against what is in the table already. The record is > not yet > > added to the table when the BeforeUpdate event occurs (hence its > name). The > > record in a bound form is only inserted or updated to the table at > either > > the closing of the form or changing of records, unless it is > programmed to > > Update somehow from code. To cancel the record from updating, > just add the > > line > > > > Cancel = True > > > > somewhere in the BeforeUpdate event. If the Update was triggered > by > > changing records, the focus will return to the form exactly where > it was > > before. If the Update was triggered by closing the form, then a > message > > will pop up saying the record can't be saved at this time and I > think the > > form goes ahead and closes anyway and you lose the data that you > just typed > > into the form (which is why I always add my own button to close > the form and > > disable the close button if I am doing any BeforeUpdate checking). > > > > So your BeforeUpdate code might look something like this: > > > > ' If current form is going to create a duplicate record, Then > > If vbNo = MsgBox "This record appears to be a duplicate. Are > you sure > > you want to add it?", vbYesNo, "Duplicate!" Then > > Cancel = True > > End If > > ' End If > > > > I see no reason why you can't check for duplicates in a bound > form. In > > general, unbound forms require a lot of additional programming and > do not > > utilize all of Access' built-in features. For instance, for most > forms, you > > have to add buttons and manually program all the Update (or Save), > Insert, > > Delete, and Navigations capabilities, when Access does all of that > > automatically for you (with some quirks). > > > > Thanks, > > Toby > > > > ~ > > ----- Original Message ----- > > From: "Robin" <[EMAIL PROTECTED]> > > To: <AccessDevelopers@yahoogroups.com> > > Sent: Saturday, October 01, 2005 6:03 PM > > Subject: [AccessDevelopers] Re: Getting Duplicate Records > > > > > > > Hello Toby, > > > > > > Sorry Toby but this one wont work on a bound form: > > > > > > 4. You could test for duplicates in the BeforeUpdate of the form > > > (assuming a bound form). That way you're not deleting a record > > > right after you create it. I see no point in putting any code in > > > the AfterUpdate event of the form. > > > > > > If you put the code on either before or after, because there are > two > > > text boxes to concider. At least those boxes must be unbound. > > > > > > As a personal preference, I would use: > > > > > > 8. Unbound form so that more checks could be run if needed. > > > > > > Regards > > > Robin. > > > > > > > > > > > > > > > --- In AccessDevelopers@yahoogroups.com, "Toby Bierly" > <[EMAIL PROTECTED]> > > > wrote: > > > > It seems to me there are about 7 different ways to do this, > and it > > > mainly is > > > > up to programmer preference. If it works and there isn't any > > > negatives > > > > (like slower performance), fine. > > > > > > > > 1. You could use a combo box and Not In List, although I assume > > > you would > > > > have to do this with multiple controls, since you would have > to do > > > at least > > > > FirstName and LastName (it seemed he wanted all fields > checked). > > > > 2. You could put something like this in the AfterUpdate of > > > FirstName and > > > > LastName (or more controls) > > > > If Not IsNull(LastName) Then > > > > 'Check for duplicates and handle appropriately > > > > End If > > > > If all the fields that you are basically using as an index are > > > filled in, > > > > then go ahead and check for duplicates > > > > 3. You could set up a multi-field Index with the combination of > > > fields that > > > > you wanted to be unique and prevent duplicates from happening, > > > although you > > > > might get an error message that you would want to handle > > > appropriately. > > > > 4. You could test for duplicates in the BeforeUpdate of the > form > > > (assuming a > > > > bound form). That way you're not deleting a record right after > > > you create > > > > it. I see no point in putting any code in the AfterUpdate > event > > > of the > > > > form. > > > > When checking for duplicates, you could use... > > > > 5. DLookup("ID", "TableName", "FirstName = '" & txtFirstName > & "' > > > And > > > > LastName = '" & txtLastName & "' ... > > > > 6. Or a query checking for an record with identical fields (at > > > least the > > > > field you are cross-checking). Then either dump the results > into a > > > > recordset and check for EOF (meaning the query returned 0 > records > > > meaning > > > > there isn't a duplicate) > > > > 7. Or a DCount query (same query as in 6 except for the DCount) > > > > > > > > Like I said, there are tons of ways to attack this problem. > > > > > > > > HTH, > > > > Toby > > > > > > > > ----- Original Message ----- > > > > From: "Robin" <[EMAIL PROTECTED]> > > > > To: <AccessDevelopers@yahoogroups.com> > > > > Sent: Saturday, October 01, 2005 5:20 AM > > > > Subject: [AccessDevelopers] Re: Getting Duplicate Records > > > > > > > > > > > > > Hi Tom, > > > > > > > > > > No, I don't like deleting records right in the middle of > making > > > > > them. I leave the text boxes in question unbound (or even the > > > whole > > > > > form) and then use an update sql if the record doesn't exist. > > > > > > > > > > Like I said, a coupla lines of code (maybe three or four). > > > > > > > > > > Regards > > > > > Robin. > > > > > > > > > > > > > > > --- In AccessDevelopers@yahoogroups.com, "Tom Oakes" > <[EMAIL PROTECTED]> > > > > > wrote: > > > > > > Yes - more work, but more elegant in my opinion. The > > > AfterUpdate > > > > > occurs > > > > > > after the problem (the duplicate entry) has already > occurred. > > > > > > Then you give them the option to delete it if it's a > duplicate, > > > > > I'd assume - > > > > > > which seems a little silly to me. > > > > > > > > > > > > Tom Oakes > > > > > > Personal PC Consultants, Inc. > > > > > > [EMAIL PROTECTED] > > > > > > 503.230.0911 (O) > > > > > > 402.968.6946 (C) > > > > > > 734.264.0911 (F) > > > > > > > > > > > > > > > > > > > > > > > > _____ > > > > > > > > > > > > From: AccessDevelopers@yahoogroups.com > > > > > > [mailto:[EMAIL PROTECTED] On Behalf Of > Robin > > > > > > Sent: Friday, September 30, 2005 4:57 PM > > > > > > To: AccessDevelopers@yahoogroups.com > > > > > > Subject: [AccessDevelopers] Re: Getting Duplicate Records > > > > > > > > > > > > > > > > > > Hi Guys, > > > > > > > > > > > > Scuse me for butting in, but this seems like a lot of > trouble > > > to > > > > > go > > > > > > to to avoid using DLookup. > > > > > > > > > > > > If you do a lookup in the after update event on FirstName > and > > > > > > LastName and a message or other aproprate action if found > (like > > > > > > loading the record) it's only a coupla lines of code. > > > > > > > > > > > > Regards > > > > > > Robin. > > > > > > > > > > > > > > > > > > > > > > > > --- In AccessDevelopers@yahoogroups.com, "Crosier, Dawn" > > > > > > <[EMAIL PROTECTED]> wrote: > > > > > > > Thanks Tom - This will be easier to implement than I > thought > > > it > > > > > > would, > > > > > > > basically I will force the search first and then allow > them > > > to > > > > > add > > > > > > if no > > > > > > > records are found. I already had a search form / > process in > > > > > > place, I'll > > > > > > > just reverse when things are done. > > > > > > > > > > > > > > Sometimes you just need someone else's "eyes" on a > problem! > > > > > > Especially > > > > > > > when you are a one person development "team". > > > > > > > > > > > > > > Have a good weekend! > > > > > > > > > > > > > > Dawn Crosier > > > > > > > Application Specialist > > > > > > > "Education Lasts a Lifetime" > > > > > > > > > > > > > > This message was posted to a newsgroup. Please post > replies > > > and > > > > > > > questions to the group so that others can learn as well. > > > > > > > > > > > > > > > > > > > > > ________________________________ > > > > > > > > > > > > > > From: AccessDevelopers@yahoogroups.com > > > > > > > [mailto:[EMAIL PROTECTED] On Behalf Of > Tom > > > Oakes > > > > > > > Sent: Friday, September 30, 2005 4:21 PM > > > > > > > To: AccessDevelopers@yahoogroups.com > > > > > > > Subject: RE: [AccessDevelopers] Getting Duplicate Records > > > > > > > > > > > > > > > > > > > > > You can't reasonably expect to be able to index the > first & > > > last > > > > > > names, > > > > > > > so... > > > > > > > > > > > > > > I would create a unbound, pop-up form that is the first > step > > > in > > > > > > entering > > > > > > > a new client. Change the "Allow Additions" property on > your > > > > > main > > > > > > client > > > > > > > form to disallow the "native" addition of a new record. > > > > > > > > > > > > > > Your pop-up would have textboxes for first/last/title, at > > > > > least. > > > > > > Add a > > > > > > > "Save" button and a "Cancel" button. The "Save" button > does > > > > > this: > > > > > > > > > > > > > > 1) Searches the client table for matches on these fields. > > > > > > > 2) Warns if found - maybe have a listbox on this form > that > > > shows > > > > > > > duplicates with a bit more info (address, phone, etc) > that > > > > > enables > > > > > > them > > > > > > > to determine whether the client actually exists in the db > > > > > already, > > > > > > or > > > > > > > whether the match is coincidence. > > > > > > > 3) Give the user the choice to add the record, or jump > to the > > > > > > existing > > > > > > > record. > > > > > > > > > > > > > > I do this sort of thing quite a bit to enforce relational > > > > > integrity > > > > > > > that's a little to complicated to do with indices, etc. > > > > > > > > > > > > > > Hope that helps. > > > > > > > > > > > > > > Tom Oakes > > > > > > > Personal PC Consultants, Inc. > > > > > > > [EMAIL PROTECTED] > > > > > > > 503.230.0911 (O) > > > > > > > 402.968.6946 (C) > > > > > > > 734.264.0911 (F) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Please zip all files prior to uploading to Files section. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > SPONSORED LINKS > > > > > > Microsoft > > > > > > <http://groups.yahoo.com/gads? > > > > > t=ms&k=Microsoft+access+developer&w1=Microsoft > > > > > > > > > > > > > > > +access+developer&w2=Microsoft+access+help&w3=Microsoft+access+databa > > > > > se&w4=M > > > > > > > > > > > > > > > icrosoft+access+training&w5=Microsoft+access+training+course&w6=Micro > > > > > soft+ac > > > > > > cess+programming&c=6&s=193&.sig=d-CjBIrYOH9NCKHYFeGZJA> > access > > > > > developer > > > > > > Microsoft > > > > > > <http://groups.yahoo.com/gads? > > > > > t=ms&k=Microsoft+access+help&w1=Microsoft+acce > > > > > > > > > > > > > > > ss+developer&w2=Microsoft+access+help&w3=Microsoft+access+database&w4 > > > > > =Micros > > > > > > > > > > > > > > > oft+access+training&w5=Microsoft+access+training+course&w6=Microsoft+ > > > > > access+ > > > > > > programming&c=6&s=193&.sig=crx-d4AAhdklv_VozGVAUw> access > help > > > > > Microsoft > > > > > > <http://groups.yahoo.com/gads? > > > > > t=ms&k=Microsoft+access+database&w1=Microsoft+ > > > > > > > > > > > > > > > access+developer&w2=Microsoft+access+help&w3=Microsoft+access+databas > > > > > e&w4=Mi > > > > > > > > > > > > > > > crosoft+access+training&w5=Microsoft+access+training+course&w6=Micros > > > > > oft+acc > > > > > > ess+programming&c=6&s=193&.sig=qg2hDuQNweByMCX0NU7cEA> > access > > > > > database > > > > > > Microsoft > > > > > > <http://groups.yahoo.com/gads? > > > > > t=ms&k=Microsoft+access+training&w1=Microsoft+ > > > > > > > > > > > > > > > access+developer&w2=Microsoft+access+help&w3=Microsoft+access+databas > > > > > e&w4=Mi > > > > > > > > > > > > > > > crosoft+access+training&w5=Microsoft+access+training+course&w6=Micros > > > > > oft+acc > > > > > > ess+programming&c=6&s=193&.sig=bLZHqTqWUQny609X1OkmNA> > access > > > > > training > > > > > > Microsoft > > > > > > <http://groups.yahoo.com/gads? > > > > > t=ms&k=Microsoft+access+training+course&w1=Mic > > > > > > > > > > > > > > > rosoft+access+developer&w2=Microsoft+access+help&w3=Microsoft+access+ > > > > > databas > > > > > > > > > > > > > > > e&w4=Microsoft+access+training&w5=Microsoft+access+training+course&w6 > > > > > =Micros > > > > > > > oft+access+programming&c=6&s=193&.sig=d8GQXfQW3RZ64rOfzIMo8A> > > > > > access > > > > > > training course Microsoft > > > > > > <http://groups.yahoo.com/gads? > > > > > t=ms&k=Microsoft+access+programming&w1=Microso > > > > > > > > > > > > > > > ft+access+developer&w2=Microsoft+access+help&w3=Microsoft+access+data > > > > > base&w4 > > > > > > > > > > > > > > > =Microsoft+access+training&w5=Microsoft+access+training+course&w6=Mic > > > > > rosoft+ > > > > > > access+programming&c=6&s=193&.sig=iXDlL79-kkgjv6fLyFu3Sg> > > > access > > > > > programming > > > > > > > > > > > > > > > > > > _____ > > > > > > > > > > > > YAHOO! GROUPS LINKS > > > > > > > > > > > > > > > > > > > > > > > > * Visit your group "AccessDevelopers > > > > > > <http://groups.yahoo.com/group/AccessDevelopers> " on the > web. > > > > > > > > > > > > > > > > > > * To unsubscribe from this group, send an email to: > > > > > > [EMAIL PROTECTED] > > > > > > <mailto:[EMAIL PROTECTED] > > > > > subject=Unsubscribe> > > > > > > > > > > > > > > > > > > * Your use of Yahoo! Groups is subject to the Yahoo! Terms > > > > > of Service > > > > > > <http://docs.yahoo.com/info/terms/> . > > > > > > > > > > > > > > > > > > _____ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Please zip all files prior to uploading to Files section. > > > > > Yahoo! Groups Links > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Please zip all files prior to uploading to Files section. > > > Yahoo! Groups Links > > > > > > > > > > > > > > > > > > > > > > > > > > Please zip all files prior to uploading to Files section. > Yahoo! Groups Links > > > > > > ------------------------ Yahoo! Groups Sponsor --------------------~--> Most low income households are not online. Help bridge the digital divide today! http://us.click.yahoo.com/cd_AJB/QnQLAA/TtwFAA/q7folB/TM --------------------------------------------------------------------~-> Please zip all files prior to uploading to Files section. Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/AccessDevelopers/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/