我正在使用vb6中的应用程序从数据库中提取信息。我遇到了许多来自数据库中空值的问题,因为vb6函数和子程序不喜欢空值。通过将空字符串连接到值可以轻松解决字符串问题。但是我应该为布尔值应该为的空值做什么?
感谢您的帮助!
答案 0 :(得分:2)
这假设您使用ADO对象进行数据访问。
Dim boolField As Boolean
If Not IsNull(fields("FieldName").value) Then
boolField = CBool(fields("FieldName").value)
End If
答案 1 :(得分:1)
尝试使用isnull
并指定字段的.value,否则isnull()会检查字段对象(而不是值):
If (IsNull(l_BankAccount.Recordset.Fields("BANKCODE").value) = True) Or _
有关详细信息,请参阅this post。
答案 2 :(得分:1)
我正在使用大部分这些函数来处理空值
'--- 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
: - ))
答案 3 :(得分:0)
这是VB6和ASP的一个老问题。我使用Trim(l_BankAccount.Recordset.Fields("BANKCODE").value & " ")
来解决许多问题,包括dbNull
对于整数字段CLng("0" & Trim(l_BankAccount.Recordset.Fields("BANKCODE").value & " "))
的工作原理。