代码之家  ›  专栏  ›  技术社区  ›  chama

vb6空布尔值

  •  2
  • chama  · 技术社区  · 14 年前

    我正在开发一个在VB6中从数据库中提取信息的应用程序。由于vb6函数和子例程不喜欢空值,我遇到了许多来自数据库中空值的问题。字符串问题很容易通过将空字符串连接到值来解决。但是对于一个应该是布尔值的空值,我该怎么做呢?

    谢谢你的帮助!

    4 回复  |  直到 14 年前
        1
  •  2
  •   ChaosPandion    14 年前

    这假设您正在使用ADO对象进行数据访问。

    Dim boolField As Boolean
    If Not IsNull(fields("FieldName").value) Then
        boolField = CBool(fields("FieldName").value)
    End If   
    
        2
  •  1
  •   Justin Ethier    14 年前

    试用使用 isnull 并指定字段的.value,否则isNull()将检查字段对象(而不是值):

    If (IsNull(l_BankAccount.Recordset.Fields("BANKCODE").value) = True) Or _
    

    有关详细信息,请参阅 this post .

        3
  •  1
  •   wqw    14 年前

    我使用这些函数的大部分来处理空值

    '--- type-casting without errors'
    Public Function C2Str(Value As Variant) As String
        On Error Resume Next
        C2Str = CStr(Value)
        On Error GoTo 0
    End Function
    
    Public Function C2Lng(Value As Variant) As Long
        On Error Resume Next
        C2Lng = CLng(Value)
        On Error GoTo 0
    End Function
    
    Public Function C2Cur(Value As Variant) As Currency
        On Error Resume Next
        C2Cur = CCur(Value)
        On Error GoTo 0
    End Function
    
    Public Function C2Dbl(Value As Variant) As Double
        On Error Resume Next
        C2Dbl = CDbl(Value)
        On Error GoTo 0
    End Function
    
    Public Function C2Date(Value As Variant) As Date
        On Error Resume Next
        C2Date = CDate(Value)
        On Error GoTo 0
    End Function
    
    Public Function C2Bool(Value As Variant) As Boolean
        On Error Resume Next
        C2Bool = CBool(Value)
        On Error GoTo 0
    End Function
    

    你可以使用 C2Bool 在您的情况下:—)

        4
  •  0
  •   Dave    14 年前

    这是vb6和asp的老问题。我用 Trim(l_BankAccount.Recordset.Fields("BANKCODE").value & " ") 它消除了许多问题,包括dbnull。
    对于整数字段 CLng("0" & Trim(l_BankAccount.Recordset.Fields("BANKCODE").value & " ")) 作品。