excel 运行时错误'-2147352571(80020005)类型不匹配

thtygnil  于 2022-12-05  发布在  其他
关注(0)|答案(2)|浏览(894)

.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
wsewodh2

wsewodh21#

我认为您应该在发生错误时启动调试器。然后在“立即”窗口中写入? rs(1)。如果这引发了错误,则rs(1)部分有问题,否则问题出在.AddItem上。
在第一种情况下,在“监 windows 口”中监视rs,并确定它具有哪些属性。也许它没有默认属性,当您尝试使用rs(1)时,可以通过它访问某些内容的第一个属性。我想您对其中一个字段感兴趣,所以我将尝试?rs.Fields(1)
在第二种情况下,rs(1)会传回无法转换成字串的数据。您可以尝试? CStr(rs(1)),看看它是否可以转换,或在[监看式] windows 中监看它。但如何继续,则取决于您的发现。

dgenwo3n

dgenwo3n2#

您没有显示数据库模式,但从SQL中可以看出,第一个字段似乎是numberic(idClient),并且您试图将其与ListBox.AddItem一起使用,而ListBox.AddItem需要字符串。
因此,您只需按如下方式进行转换:

With UserForm2.ListBox1
    .AddItem Str(rs(1))

    ' etc. ....

End With

相关问题