使用一组存储数组通过 sql 查询获取数据

Use set of stored array to fetch data through sql query

开发环境为VBA (AutoCAD)

我在该数组函数 BomLine(iCountItem).PartNo 中存储了一组值,我想进一步使用它通过特定的 SQL 查询将数据提取到 Excel 中。

函数从 AutoCAD 绘图中获取其值并将该值存储到;那部分是成功的,但它没有将数据提取到 excel,也许我没有正确使用 For Each 循环?

这就是我正在做的事情:

Dim OExcel As Object
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim ConnectionString As String
Dim StrQuery As String
Dim xyz as Variant 

For x = 0 To UBound(DwgBlocks(i).AttributeName)
   Select Case DwgBlocks(i).AttributeName(x)
       Case OldDwgFmt.BOMPartNo
           BomLine(iCountItem).PartNo = DwgBlocks(i).AttributeVal(x)
   End Select
Next x

Exit For
Set OExcel = CreateObject("Excel.Application")

If OExcel Is Nothing Then
    Exit Sub
End If

With OExcel
    .Visible = True
    .Workbooks.Add
    .SheetsInNewWorkbook = 1
End With

With worksheet
    ConnectionString = "Provider=SQLOLEDB.1;Password=***;Persist Security Info=True;User ID=***;Data Source=***\***;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=***"
    cnn.Open ConnectionString
    cnn.CommandTimeout = 900

    List = "BomLine(iCountItem).PartNo"

    For Each xyz in List

        StrQuery = "SELECT * FROM [MY_Table] WHERE [MY_Column]='xyz'"    
        rst.Open StrQuery, cnn

        Set worksheet = OExcel.Worksheets(1).cells(1, 1).CopyFromRecordset rst
        Exit For
    Next xyz
End With
    ConnectionString = "Provider=SQLOLEDB.1;Password=***;Persist Security Info=True;User ID=***;Data Source=***\***;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=***"
    cnn.Open ConnectionString
    cnn.CommandTimeout = 900

    List = "BomLine(iCountItem).PartNo"

    For Each xyz in BomLine

        StrQuery = "SELECT * FROM [MY_Table] WHERE [MY_Column]='" _
                     & xyz.PartNo & "'"    

        rst.Open StrQuery, cnn

        OExcel.Worksheets(1).cells(rows.count, _
                   1).end(xlUp).Offset(1,0).CopyFromRecordset rst

    Next xyz