[AccessD] Duplicates on Two Values

David McAfee davidmcafee at gmail.com
Wed Nov 18 18:55:08 CST 2009


It was simply Air code.
There should actually be a message displayed in prior to the Cancel =
true firing

1. If you don't make an entry, of course the event wont fire
2. It works, try it. Create a new form with two text boxes on it:

Private Sub Text0_BeforeUpdate(Cancel As Integer)
If Nz(Me.Text0, "") <> "" And Me.Text0 = Me.Text2 Then
    MsgBox "the two boxes cannot have the same value"
    Cancel = True
End If
End Sub

Private Sub Text2_BeforeUpdate(Cancel As Integer)
If Nz(Me.Text2, "") <> "" And Me.Text2 = Me.Text0 Then
    MsgBox "the two boxes cannot have the same value"
    Cancel = True
End If
End Sub

That is what the "And" is for ;)

This is for Rocky's condition #3 in his question to Virginia, which
doesn't apply anyway.







On Wed, Nov 18, 2009 at 3:39 PM, Asger Blond <ab-mi at post3.tele.dk> wrote:
> David,
> Just curious: what's your using NZ in the BeforeUpdate event supposed to do?
> The NZ function is checking for NULL, and:
> 1. If you don't make an entry (leaving the field NULL or bypassing an
> existing value) then per definition the BeforeUpdate event won't fire.
> 2. If you make an entry (making the field NOT NULL) or delete an existing
> entry (making the field NULL) then the event will fire but per definition
> the expression NZ(Field,"")<>"" will always evaluate to FALSE making the
> whole IF condition FALSE.
> Net sum, as I see it: Your BeforeUpdate procedure won't do anything
> whatsoever howsoever.
> Asger
> -----Oprindelig meddelelse-----
> Fra: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com] På vegne af David McAfee
> Sendt: 18. november 2009 22:27
> Til: Access Developers discussion and problem solving
> Emne: Re: [AccessD] Duplicates on Two Values
>
> I assumed Virgina meant a 4th option, ItemName+ItemDesc cannot be used
> if they already exist in the system
>
> Is this correct:
>
> ItemNo  ItemDesc
> 12345    Battery (allowed as long as 12345+Battery do not already exist)
>  2255     Battery (allowed as long as 2255+Battery do not already exist)
> 12345    Hammer (allowed as long as 12345+Hammer do not already exist)
> 4567     4567 (not allowed as per 3) below)
> cable    cable (Not allowed)
> 12345   Battery (Not allowed a 2nd time)
> 12345   Battrey (Allowed as long as 2255+Battrey do not already exist)
>
>
> If it is simply the 3rd option below, Why couldn't you put the
> following in the BeforeUpdate events of txtItemNo and txtItemDesc:
>
>
> Private Sub txtItemNo_BeforeUpdate(Cancel As Integer)
>   If NZ(me.txtItemNo,"") <> "" And me.txtItemNo = me.txtItemDesc
> then cancel = true
> End Sub
>
> Private Sub txtItemDesc_BeforeUpdate(Cancel As Integer)
>   If NZ(me.txtItemDesc,"") <> "" And me.txtItemDesc = me.txtItemNo
> then cancel = true
> End Sub
>
> This is why I brought up the idea of the PKID in another post.
>
> If this is an entry screen for entering the item no and description
> into the sytem, then I would believe not allowing the item number and
> description more than once as a pair is correct.
>
> If this is an order form, or something similar, then the ItemNo should
> be entered, then in the After Update open a recordset and populate the
> PKID and Description.
>
>
>
> On Wed, Nov 18, 2009 at 1:00 PM, Asger Blond <ab-mi at post3.tele.dk> wrote:
>> David,
>> Your assumption (that you may be wrong) is quite right ;-)
>> In a previous posting Rocky asked:
>>        Is it the case that you have three checks to make?
>>        1) Is ItemName already being used in an existing record?
>>        2) Is ItemDesc already being used in an existing record?
>>        3) Is ItemName = ItemDesc in the current record?
>> And Virginia answered:
>>        Number 3. ItemName can be repeated & so can the ItemDesc just not
>>        together in the same record.
>>
>> This kind of constraint just isn't as case for a KEY constraint (neither a
>> PK constraint nor a UNIQUE constraint). It can only be enforced using
> either
>> 1) a TABLE-LEVEL CHECK constraint (perhaps the best solution because it's
>> enforced no matter where you are making your entry), or 2) a PROCEDURAL
>> constraint (as suggested by Rocky and me).
>> Asger
>
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>
>
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>




More information about the AccessD mailing list