带有Null值的Excel VBA ADO记录集问题

时间:2017-11-15 01:47:30

标签: sql-server excel vba excel-vba

我在VBA很新,并且在ADO方面存在问题 目前,代码使用从SQL数据库返回字段(名称郊区状态)到ListBox。 只要有所有字段都有值,代码就可以正常工作,如果有Null值则返回错误

  

无法设置List属性。类型不匹配

我需要找到一种方法,如果郊区和/或州字段返回Null值,它仍会填充列表框。
任何信息都将非常感谢,提前谢谢!

数据库条目

Database entries

错误的屏幕截图

Screenshot of error 1.%

Dim cnn As ADODB.Connection
Dim rs As New ADODB.Recordset
Dim SQLquery As String
Dim cnnstr As String
Dim SQLName As String
Dim i As Integer

SQLName = "Salon"
SQLquery = "SELECT [Name], [Suburb], [State] FROM Salon WHERE Name like '" & SQLName & "%'"

Set cnn = New Connection
cnnstr = "Provider=SQLOLEDB; " & _
                "Data Source=localhost; " & _
                "Initial Catalog=MyDatabase;" & _
                "User ID=sa;" & _
                "Password=Password;" & _
                "Trusted_Connection=Yes;"

cnn.Open cnnstr  
cnn.Execute SQLquery
rs.Open SQLquery, cnn, adOpenStatic

    rs.MoveFirst
    i = 0
    With Me.lb_search
        .Clear
        Do
            .AddItem
            .List(i, 0) = rs!Name
            .List(i, 1) = rs!Suburb
            .List(i, 2) = rs!State
            i = i + 1
            rs.MoveNext
        Loop Until rs.EOF
    End With

btn_search_test_Exit:
On Error Resume Next
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing

2 个答案:

答案 0 :(得分:0)

Iif可以返回Null值的替代值。

例如:

.List(i, 0) = IIf(IsNull(a), "(not found)", rs!Name)

将返回"(未找到)"如果值为null。

更多信息herehere

答案 1 :(得分:0)

nz在Excel中无法使用 哦,是的,它是:-)

Public Function NZ(v As Variant, Optional valueifnull As Variant = 0) As Variant
If IsNull(v) Then
      NZ = valueifnull
Else
    NZ = v
End If
End Function