【发布时间】:2017-11-02 06:07:03
【问题描述】:
我一直在寻找一种直接的方法来做到这一点,但我遇到的大多数答案都是切线而不是直接解决问题。
这是我试图通过 VBA 运行的简化 SQL sn-p
SELECT * INTO ##Customers FROM Addresses
SELECT * FROM ##Customers a LEFT JOIN PostageRate b ON a.ZipCode=b.ZipCode
然后我需要将所有这些数据放入 Excel 工作表中。
到目前为止,我能够执行:
SELECT * FROM Addresses
这是没有临时表的第一个查询的功能等价物。我得到了RecordSet,然后我使用CopyFromRecordSet 将其放入工作表中,但我不知道如何将RecordSet 转换为表,因此我可以在第二个查询中查询它 LEFT JOIN,然后将生成的RecordSet 放在工作表上。
我尝试运行的查询自然比这个更复杂,但这说明了我想要实现的目标。
抱歉,如果我错过了一个回答这个问题的帖子,但我还没有遇到它。
谢谢!
编辑:我已经考虑将第一个查询中的数据放到工作表上,并将工作表视为第二个查询的表。问题如下: 该工作表是本地的,第二个表在数据库上。根据this question,数据库需要能够访问 Excel 工作表。它不是。任何有关如何通过 VBA 实现临时表的更多见解将不胜感激。谢谢大家!
【问题讨论】:
-
您可以使用 ACE.OLEDB 提供程序通过 ADODB 查询 excel 表。工作表就是表格。
-
我不明白为什么你不能只使用子查询,或者有一个构建临时表的表值函数。为什么excel中需要临时表存在?我想如果您的第二个查询是在不同的数据源上,这将是有意义的......
-
@JeffUK 我不介意临时表是在数据库服务器而不是本地表中创建的。你能指出我通过 Excel VBA 做到这一点的正确方向吗?感谢您的帮助!
-
@jivko 我想我可以做到。我希望在内存中完成这一切,而不是在使用它之前吐在一张纸上。不过,我的思考过程没有很好的逻辑基础,只是感觉……不优雅……感谢您的帮助!
-
我会说,在服务器中创建一个视图,然后在excel中查询该视图并导入。如果我要做复杂的事情,我会尽可能多地使用数据库工具。
标签: sql sql-server vba excel