Обсуждение: Numeric Type and VB/ODBC
This may not be the right group, if so, just let me know.
I have a table with a type [numeric].
When executing queries, I get the data which happens to
be (6.5) in this case, but my VB6 function which traps
for nulls (below) returns a null.
If I change it to type [real]. No problems
Function IsNothing(varToTest As Variant) As Integer
' Tests for a "logical" nothing based on data type
' Empty and Null = Nothing
' Number = 0 is Nothing
' Zero length string is Nothing
' Date/Time is never Nothing
IsNothing = True
Select Case VarType(varToTest)
Case vbEmpty
Exit Function
Case vbNull
Exit Function
Case vbBoolean
If varToTest Then IsNothing = False
Case vbByte, vbInteger, vbLong, vbSingle, vbDouble, vbCurrency
If varToTest <> 0 Then IsNothing = False
Case vbDate
IsNothing = False
Case vbString
If (Len(varToTest) <> 0 And varToTest <> " ") Then IsNothing =
False
End Select
End Function
Bret Stern
You can try If (IsNumeric(varToTest) And 0 = CDbl(varToTest)) Then IsNothing = True Bret wrote: > This may not be the right group, if so, just let me know. > > I have a table with a type [numeric]. > > When executing queries, I get the data which happens to > be (6.5) in this case, but my VB6 function which traps > for nulls (below) returns a null. > > If I change it to type [real]. No problems > > > Function IsNothing(varToTest As Variant) As Integer > ' Tests for a "logical" nothing based on data type > ' Empty and Null = Nothing > ' Number = 0 is Nothing > ' Zero length string is Nothing > ' Date/Time is never Nothing > > IsNothing = True > > Select Case VarType(varToTest) > Case vbEmpty > Exit Function > Case vbNull > Exit Function > Case vbBoolean > If varToTest Then IsNothing = False > Case vbByte, vbInteger, vbLong, vbSingle, vbDouble, vbCurrency > If varToTest <> 0 Then IsNothing = False > Case vbDate > IsNothing = False > Case vbString > If (Len(varToTest) <> 0 And varToTest <> " ") Then IsNothing = > False > End Select > > End Function > > > Bret Stern > > > >