我正在從vb6中的應用程序,從數據庫中繪製信息。我遇到了很多來自數據庫空值的問題,因爲vb6函數和子例程不像空值。字符串問題很容易通過將空字符串連接到值來解決。但是,如果布爾值應該是空值,我該怎麼辦?VB6 null布爾
感謝您的幫助!
我正在從vb6中的應用程序,從數據庫中繪製信息。我遇到了很多來自數據庫空值的問題,因爲vb6函數和子例程不像空值。字符串問題很容易通過將空字符串連接到值來解決。但是,如果布爾值應該是空值,我該怎麼辦?VB6 null布爾
感謝您的幫助!
這假定您使用ADO對象進行數據訪問。
Dim boolField As Boolean
If Not IsNull(fields("FieldName").value) Then
boolField = CBool(fields("FieldName").value)
End If
嘗試使用isnull
和指定字段的。價值,因爲否則ISNULL()檢查在場地對象(而不是值):
If (IsNull(l_BankAccount.Recordset.Fields("BANKCODE").value) = True) Or _
更多信息參見this post。
這是VB6和ASP的老問題。我使用了Trim(l_BankAccount.Recordset.Fields("BANKCODE").value & " ")
,它消除了包括dbNull在內的許多問題。
對於整數字段CLng("0" & Trim(l_BankAccount.Recordset.Fields("BANKCODE").value & " "))
的作品。
我使用的大多數函數來處理空值
'--- 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
你可以在你的情況:-))
NULL意味着使用
C2Bool
「沒有價值」,所以我不知道如何你會希望編譯器猜測你的意圖。只需編碼以測試Null並根據需要採取適當的措施。這是Null的目的,它不是一個缺陷或缺陷。 你的問題就像是問一個整數等於3時如何處理,當你在頭腦中建模時,只有1和2是有效的。如果你不想讓Null有意義,不要在數據庫中存儲Null。 – Bob77 2010-06-25 22:35:48我沒有寫數據庫。我只需要使用它。 – chama 2010-06-29 19:56:51