sql - 从 excel 表在 VBA 中创建一个临时表以用于 sql 查询
问题描述
是否有可能从 excel 命名表中获取数据并在 sql 语句中引用它?到目前为止,我使用 Power Query,但它需要从 sql 表中获取所有数据,并且它有超过 200k 行并且需要超过 30 秒。通常有 1-20 行可以放置数据,但非常频繁。
假设sheet1中有excel_table和 sql 连接。
我想:
SELECT a.contract, a.part_no, a.vendor_no
FROM sql_table a
INNER JOIN excel_table b on a.contract_no = b.contract_no and a.part_no = b.part_no
我真的是VBA的初学者。到目前为止,我只能通过制作一个公式来连接文本并将其放在 where 子句中,从而使用单元格范围来获取 part_no,如下所示:
Sub Makro1()
Dim qt As QueryTable
Dim cell_value As String
cell_value = Arkusz3.Range("A1")
sqlstring = "SELECT a.* FROM sql.table a WHERE a.part_no in (" & cell_value & ")"
connstring = "ODBC;DSN=XXX;UID=XXX;PWD=XXX;Database=XXX"
With ActiveSheet.QueryTables.Add(Connection:=connstring, Destination:=Range("C3"), Sql:=sqlstring)
.Refresh
End With
End Sub
更重要的是,每次刷新它都不会替换返回的数据,而是插入新列并将旧列向右移动。
我会很高兴得到一些帮助和一些初学者的建议。最好能逐行解释代码。
解决方案
推荐阅读
- highcharts - 数据标签未显示在 3D Highcharts 条/列中
- mysql - 如何使用sql将日期时间字符串转换为日期时间格式
- ruby - 为什么在 Ruby 中允许像 1 + n *= 3 这样的语句?
- z3 - z3 的可扩展性
- unity3d - 游戏对象的大小限制是多少?
- opencl - OpenCL 在 AMD 平台上无法正常运行
- c# - 如何在 Unity 中使用原生 android 文件打开对话框?
- visual-studio - 如何自动应用 VS 快速操作提供的解决方案来解决 Stylecop(roslyn) 代码样式错误
- android - onCharacteristicRead 返回状态 137
- cuda - cudaMemcpyToSymbol 给出 cudaErrorUnknown