2010-06-24 47 views
2

我正在從vb6中的應用程序,從數據庫中繪製信息。我遇到了很多來自數據庫空值的問題,因爲vb6函數和子例程不像空值。字符串問題很容易通過將空字符串連接到值來解決。但是,如果布爾值應該是空值,我該怎麼辦?VB6 null布爾

感謝您的幫助!

+0

NULL意味着使用C2Bool「沒有價值」,所以我不知道如何你會希望編譯器猜測你的意圖。只需編碼以測試Null並根據需要採取適當的措施。這是Null的目的,它不是一個缺陷或缺陷。 你的問題就像是問一個整數等於3時如何處理,當你在頭腦中建模時,只有1和2是有效的。如果你不想讓Null有意義,不要在數據庫中存儲Null。 – Bob77 2010-06-25 22:35:48

+0

我沒有寫數據庫。我只需要使用它。 – chama 2010-06-29 19:56:51

回答

2

這假定您使用ADO對象進行數據訪問。

Dim boolField As Boolean 
If Not IsNull(fields("FieldName").value) Then 
    boolField = CBool(fields("FieldName").value) 
End If 
1

嘗試使用isnull和指定字段的。價值,因爲否則ISNULL()檢查在場地對象(而不是值):

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

更多信息參見this post

0

這是VB6和ASP的老問題。我使用了Trim(l_BankAccount.Recordset.Fields("BANKCODE").value & " "),它消除了包括dbNull在內的許多問題。
對於整數字段CLng("0" & Trim(l_BankAccount.Recordset.Fields("BANKCODE").value & " ")) 的作品。

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 

你可以在你的情況:-))