在.AddItem rs(1)
行中有Run-time error '-2147352571(80020005) Type mismatch
:
Private Sub UserForm_Activate()
If dbconn.State = adStateClosed Then dbconn.Open strConn
Dim rs As New ADODB.Recordset
ListBox1.Clear
ListBox1.ColumnCount = 6
rs.Open "select idClient,client_name,Address,City,state,country from tblClients ", dbconn
Do While rs.EOF = False
i = i + 1
With UserForm2.ListBox1
.AddItem rs(1) '---------> getting ERROR HERE PLEASE LET ME KNOW
.List(.ListCount - 1, 1) = rs(2)
.List(.ListCount - 1, 2) = rs(3)
.List(.ListCount - 1, 3) = rs(4)
.List(.ListCount - 1, 4) = rs(5)
.List(.ListCount - 1, 5) = rs(0)
End With
rs.MoveNext
Loop
rs.Close
With cmbCountry
.AddItem "United States"
.AddItem "Canada"
.AddItem "Germany"
.AddItem "Australia"
End With
cmbCountry.ListIndex = 0
End Sub
2条答案
按热度按时间wsewodh21#
我认为您应该在发生错误时启动调试器。然后在“立即”窗口中写入
? rs(1)
。如果这引发了错误,则rs(1)部分有问题,否则问题出在.AddItem
上。在第一种情况下,在“监 windows 口”中监视rs,并确定它具有哪些属性。也许它没有默认属性,当您尝试使用
rs(1)
时,可以通过它访问某些内容的第一个属性。我想您对其中一个字段感兴趣,所以我将尝试?rs.Fields(1)
。在第二种情况下,rs(1)会传回无法转换成字串的数据。您可以尝试
? CStr(rs(1))
,看看它是否可以转换,或在[监看式] windows 中监看它。但如何继续,则取决于您的发现。dgenwo3n2#
您没有显示数据库模式,但从SQL中可以看出,第一个字段似乎是numberic(
idClient
),并且您试图将其与ListBox.AddItem
一起使用,而ListBox.AddItem
需要字符串。因此,您只需按如下方式进行转换: