为什么我的 SQL Server 数据库连接不通过 Excel VBA 刷新



我有一个报告,我从我在我的SQL Server数据库的数据建设。我有3个连接到数据库中的3个不同的表。

我的excel报表中有两个工作表。

Sheet 1 = Report
Sheet 2 = Data

我有以下简单的宏来触发'Workbook_Open'事件:

Public Sub Refresh_Connection()
    'Wait for all Refresh Procedures to finish
    'This procedure will refresh the Connection to the database
    wsData.Activate
    Do Until Application.CalculationState = xlDone
        wsData.Activate
        ActiveWorkbook.RefreshAll
        ActiveWorkbook.Connections("KDSU513_JASONR dw_test Virtual_Bed_Board_Query_ChartData").refresh
        ActiveWorkbook.Connections("KDSU513_JASONR dw_test Virtual_Bed_Board_Query_SummaryData").refresh
        ActiveWorkbook.Connections("KDSU513_JASONR dw_test Virtual_Bed_Board_Query_AdmitData").refresh
        DoEvents
    Loop
    wsReport.Activate
End Sub

最初我得到一个消息说刷新没有完成,所以我添加了一个等待类似:

Application.Wait (Now + #12:00:15 AM#)

然而,我认为这个过程阻止了所有事情的发生,包括数据库刷新。我觉得这应该很简单,但是我错过了一些愚蠢的东西。

我已经尝试了很多不同的方法,但由于某种原因,我的数据库连接没有得到刷新。

任何帮助都是非常感谢的。

我找到了解决方案,至少在SQL Server。这与宏无关,你必须为你正在使用的每个连接关闭"启用后台刷新"。

转到数据选项卡,单击连接组中的连接,右键单击您的连接,然后单击属性。取消勾选"启用后台刷新"的复选框。我还额外添加了一行:ActiveWorkbook。RefreshAllActiveWorkbook。RefreshAll

为了安全起见,没有处理大量数据,所以应该不是问题。

最新更新