【发布时间】:2017-11-15 01:47:30
【问题描述】:
我是 VBA 的新手,对 ADO 有疑问。
目前,我使用的代码将 SQL 数据库中的字段(Name、Suburb、State)返回到 ListBox。
只要所有字段都有值,代码就可以正常工作,如果有 Null 值,则返回错误
无法设置 List 属性。类型不匹配
我需要找到一种方法,以便如果 Suburb 和/或 State 字段返回 Null 值,它仍会填充列表框。
任何信息将不胜感激,在此先感谢!
数据库条目
错误截图
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
【问题讨论】:
-
.List(i, 1) = rs!Suburb & ""有点老套,但通常有效。 -
SELECT [Name], NVL([Suburb], '') as Suburb, NVL([State], '') as State FROM Salon WHERE...也应该可以工作
标签: sql-server vba excel