我在VBA很新,并且在ADO方面存在问题 目前,代码使用从SQL数据库返回字段(名称,郊区,状态)到ListBox。 只要有所有字段都有值,代码就可以正常工作,如果有Null值则返回错误
无法设置List属性。类型不匹配
我需要找到一种方法,如果郊区和/或州字段返回Null值,它仍会填充列表框。
任何信息都将非常感谢,提前谢谢!
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
答案 0 :(得分:0)
Iif
可以返回Null值的替代值。
例如:
.List(i, 0) = IIf(IsNull(a), "(not found)", rs!Name)
将返回"(未找到)"如果值为null。
答案 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