使用一组存储数组通过 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
开发环境为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