在 Excel VBA 中使用长 Access SQL 查询

Posted

技术标签:

【中文标题】在 Excel VBA 中使用长 Access SQL 查询【英文标题】:Use long Access SQL query in Excel VBA 【发布时间】:2015-06-09 23:10:07 【问题描述】:

我有一个很长的 Access SQL 查询:

SELECT Avg(Data_transmission.Forward_app_throughput) AS AvgOfForward_app_throughput

FROM (Data_transmission LEFT JOIN Data_task_statistics ON Data_transmission.Record_index = Data_task_statistics.Record_index) LEFT JOIN Bin_data ON Data_transmission.Record_index = Bin_data.Record_index

WHERE (((Data_task_statistics.Task_type_ID)=4) AND ((Data_task_statistics.Received_Application_byte)>50000) AND ((([Data_transmission].[Forward_app_throughput]))>-1) AND ((Bin_data.Protocol_id)=61));

我正在尝试在 Excel VBA 中使用它,但我设法做到这一点的唯一方法是使用 Excel 中的“从 Microsoft Query 获取数据”功能,该功能会生成此字符串

CommandText = Array( _
        "SELECT Avg(Data_transmission.Forward_app_throughput) AS AvgOfForward_app_throughput" & Chr(13) & "" & Chr(10) & "FROM (Data_transmission LEFT JOIN Data_task_statistics ON Data_transmission.Record_index = Data_task_statistics.Rec" _
        , _
        "ord_index) LEFT JOIN Bin_data ON Data_transmission.Record_index = Bin_data.Record_index" & Chr(13) & "" & Chr(10) & "WHERE (((Data_task_statistics.Task_type_ID)=4) AND ((Data_task_statistics.Received_Application_byte)>50000) AND" _
        , _
        " ((([Data_transmission].[Forward_app_throughput]))>-1) AND ((Bin_data.Protocol_id)=61));" & Chr(13) & "" & Chr(10) & "" _
        )

如何在不使用“从 Microsoft Query 获取数据”功能的情况下获取此字符串,因为它需要很长时间并且我有多个查询

【问题讨论】:

您是在问如何使用 VBA 中的 sql 查询数据库,还是有其他问题? 我知道该怎么做,我在问如何划分上面的长 SQL 查询以用作 CommandText 的数组 为什么需要它作为数组?不应该只是一串SQL吗? 我删除了数组,现在可以使用了,谢谢。 【参考方案1】:

根据我的评论添加答案。不要尝试将数组与 CommandText 一起使用,只需传递一个 SQL 字符串即可。

【讨论】:

以上是关于在 Excel VBA 中使用长 Access SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

Access中VBA中excel文件中的VLookup

从 Access 2010 VBA 打开 Excel 2010 文件

无法通过具有长定义的 vba 在 Access 中运行查询

在 Excel 中运行 VBA 代码以获取 Access 数据库中的 VBA

如何在 Access VBA 中检查 Excel 时间值?

使用 VBA 从 Access 运行后从任务管理器中删除 Excel 任务