【问题标题】:Excel ODBC Data Connection Query time taken to refresh each query刷新每个查询所用的 Excel ODBC 数据连接查询时间
【发布时间】:2017-03-23 09:53:03
【问题描述】:

我正在尝试测试从 Excel 数据连接运行的查询的三种变体。

我有三个单独的数据连接和三个单独的选项卡,分别从每个连接获取数据。

每个查询的连接字符串都相同,只有命令文本(Oracle SQL)不同。

在 Excel 中是否可以查看每个查询的执行时间?

我是专门用Excel 2016 MSO 16.0.4456.1003 64bit版本的

【问题讨论】:

    标签: sql excel oracle odbc excel-2016


    【解决方案1】:

    可能是这样的(假设所有连接都将其结果放在工作表中,而不是在数据透视表中):

    Sub TimeQueries()
        Dim oSh As Worksheet
        Dim oCn As WorkbookConnection
        Dim dTime As Double
        For Each oCn In ThisWorkbook.Connections
            dTime = Timer
            oCn.Ranges(1).ListObject.QueryTable.Refresh False
            Debug.Print Timer - dTime, oCn.Name, oCn.Ranges(1).Address(external:=True)
        Next
    End Sub
    

    要运行这个:

    1. Alt+F11 进入 VBA 编辑器。
    2. 从菜单:插入模块。
    3. 在窗口中粘贴代码。
    4. 关闭 VBA 编辑器。
    5. Alt+F8 调出宏列表。选择新的并单击运行。
    6. Alt+F11 再次进入 VBA 编辑器。
    7. Ctrl+G 打开带有结果的即时窗格。

    如果您希望代码写入单元格,请使用此版本:

    Sub TimeQueries()
        Dim oSh As Worksheet
        Dim oCn As WorkbookConnection
        Dim dTime As Double
        Dim lRow As Long
        Set oSh = Worksheets("Sheet4") 'Change to your sheet name!
        oSh.Cells(1,1).Value = "Name of Connection"
        oSh.Cells(1,2).Value = "Location"
        oSh.Cells(1,1).Value = "Refresh time (s)"
        For Each oCn In ThisWorkbook.Connections
            lRow = lRow + 1
            dTime = Timer
            oCn.Ranges(1).ListObject.QueryTable.Refresh False
            oSh.Cells(lRow,3).Value = Timer - dTime
            oSh.Cells(lRow,1).Value = oCn.Name
            oSh.Cells(lRow,2).Value = oCn.Ranges(1).Address(external:=True)
        Next
    End Sub
    

    【讨论】:

    • 它们都放在工作表中,我可以将其添加为按钮,我怎样才能让它输出结果?
    • 1. Alt+F11 转到 VBA 编辑器。 2. 从菜单:插入模块。 3. 在窗口中粘贴代码。 4. 关闭 VBA 编辑器。 5. Alt+F8 调出宏列表。选择新的并单击运行。 6. Alt+F11 再次进入 VBE。 7. Control+G 打开带有结果的即时窗格。 8. 要保留宏吗?将文件另存为 xlsm 文件。
    • 实际上,不太好用,它给了我一个不到一秒的输出,我认为它计算的是开始查询的时间,而不是查询完成执行的时间。
    • 更新后的工作。很抱歉在此浪费您的时间。
    • 有什么办法可以将其写入单元格而不是直接窗口?
    猜你喜欢
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 2015-06-19
    • 2021-03-18
    • 1970-01-01
    相关资源
    最近更新 更多