[AccessD] compare nulls

Mark A Matte markamatte at hotmail.com
Wed Jan 17 14:40:58 CST 2007


Thanks Ken,

The main purpose was "are text1 and text2 the same", if so do something, if 
not do something else(the nulls got in the way)...but with gustav's 
suggestion I used the following:
>If nz(text1) = nz(text2) then
>	Do this
>Else
>	Do that
>End If

...and it worked fine.

Thanks Again,

Mark A. Matte

>From: Ken Ismert <kismert at gmail.com>
>Reply-To: Access Developers discussion and problem 
>solving<accessd at databaseadvisors.com>
>To: accessd at databaseadvisors.com
>Subject: Re: [AccessD] compare nulls
>Date: Wed, 17 Jan 2007 14:08:25 -0600
>
>
>Mark,
>
>While it is logically tricky to say Null = Null (even though Null is
>represented by a discrete value in VB), it is sometimes useful to ask if
>two variants have the same value. A slight distinction, but a useful one.
>
>To that end, I wrote this VarComp routine some time back. This is my
>third try at this code. It has shortcomings: for performance reasons, it
>doesn't attempt even a shallow comparison of object properties or array
>contents. Obviously, there are no hard and fast rules here: one can bend
>this to their own ends.
>
>' VarComp
>' =======
>' Compares two Variants. Returns True (same) or False (different),
>' according to these rules:
>'
>'   Value1      Value1          Returns
>'   ========================================================
>'   Empty       Empty           True
>'   Null        Null            True
>'   Nothing     Nothing         True
>'   Object      Object          Result of Typename comparison
>'   Array       Array           Type and Bounds match only
>'   Matching Value Types        Result of Value Comparison
>'
>'   Condition                   Returns
>'  =========================================================
>'   Any are Missing             False
>'   Any One is Empty            False
>'   Any One is Null             False
>'   Any One is Nothing          False
>'   Type Mismatch               False
>'
>' Notes:
>'   String Comparisons are done using the TextCompare parameter
>'   User Defined Types can't be passed as variants
>'
>Public Function VarComp(ByRef vValue1 As Variant, _
>     ByRef vValue2 As Variant, _
>     Optional ByVal TextCompare As VbCompareMethod = vbBinaryCompare) As
>Boolean
>
>     Const CS_TypeString = "String"
>
>     Static sType1 As String
>     Static sType2 As String
>
>     On Error GoTo HandleErr
>
>     ' Init
>     VarComp = False
>
>     If IsMissing(vValue1) Or IsMissing(vValue2) Then Exit Function
>
>     sType1 = TypeName(vValue1)
>     sType2 = TypeName(vValue2)
>
>     If (sType1 = sType2) Then
>         ' Typenames match
>         If IsObject(vValue1) Or IsEmpty(vValue1) Or IsNull(vValue1) Then
>             ' Both are Same Object type, Nothing, Empty or Null
>             VarComp = True
>         ElseIf IsArray(vValue1) Then
>             ' Both arrays of matching type
>             VarComp = (LBound(vValue1) = LBound(vValue2)) And
>(UBound(vValue1) = UBound(vValue2))
>         ElseIf sType1 = CS_TypeString Then
>             ' Both are String
>             VarComp = (StrComp(vValue1, vValue2, TextCompare) = 0)
>         Else
>             ' Value Type: not Object, Array, Empty, Null
>             VarComp = (vValue1 = vValue2)
>         End If
>     End If
>
>     Exit Function
>
>HandleErr:
>     Err.Raise Err.Number, "VarComp" & vbCrLf & Err.Source, Err.Description
>End Function
>
> > Hi Mark,
> >
> > Would this work?
> >
> > If IsNull(txt1) and IsNull(txt2) Then
> > 	Do this
> > Else
> > 	Do that
> > End If
> >
> >
> > Dan Waters
> >
> > -----Original Message-----
> > Subject: Re: [AccessD] compare nulls
> >
> > I think the explanation is that Null is nothing and nothing can't be
> > equal to anything, not even another nothing. Or thereabouts. Perhaps
> > some IS NULL functions can be added.
> >
> > GK
> >
> >
>--
>AccessD mailing list
>AccessD at databaseadvisors.com
>http://databaseadvisors.com/mailman/listinfo/accessd
>Website: http://www.databaseadvisors.com

_________________________________________________________________
Your Hotmail address already works to sign into Windows Live Messenger! Get 
it now 
http://clk.atdmt.com/MSN/go/msnnkwme0020000001msn/direct/01/?href=http://get.live.com/messenger/overview




More information about the AccessD mailing list