VB6 null boolean - PullRequest
       24

VB6 null boolean

2 голосов
/ 24 июня 2010

Я работаю над приложением в vb6, которое извлекает информацию из базы данных.Я сталкивался с множеством проблем, связанных с нулевыми значениями в базе данных, поскольку функции и подпрограммы vb6 не любят нулевые значения.Проблема со строкой легко решается путем конкатенации пустой строки со значением.Но что мне делать для нулевого значения, где должно быть логическое значение?

Спасибо за помощь!

Ответы [ 4 ]

2 голосов
/ 26 июня 2010

Я использую большинство этих функций для обработки нулей

'--- 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 в вашем случае: -))

2 голосов
/ 24 июня 2010

Предполагается, что вы используете объекты ADO для доступа к данным.

Dim boolField As Boolean
If Not IsNull(fields("FieldName").value) Then
    boolField = CBool(fields("FieldName").value)
End If   
0 голосов
/ 24 июня 2010

Это старая проблема с VB6 и ASP.Я использую Trim(l_BankAccount.Recordset.Fields("BANKCODE").value & " "), который избавляет от многих проблем, включая dbNull.
Для целого числа работает CLng("0" & Trim(l_BankAccount.Recordset.Fields("BANKCODE").value & " ")).

0 голосов
/ 24 июня 2010

Попробуйте использовать isnull и указать .value поля, так как в противном случае isnull () проверяет объект поля (а не значение):

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