通过后台查询刷新多个 ODBC 连接
Refreshing multiple ODBC connections via background query
我正在使用一组脚本,通过 ODBC 从 iSeries 中提取大量不同的数据。
ActiveWorksheets.RefreshAll
不起作用,因为它没有给 运行 后台查询留出足够的时间
我已经尝试了下面的方法,但没有用
Dim qry As Connections
'Set qry =
For Each qry In ActiveWorksheets.Connections
qry.BackgroundQuery = False
qry.RefreshAll
DoEvents
Next qry
这给了我预期的 Error 424
对象。
我不希望在这里使用 Set qry =
,因为我需要 运行 通过 30 个不同的连接
我们暂时称它们为 connection1、connection2 等,因为它们的名字到处都是
最简单的方法是停止后台查询,刷新,激活后台查询-在数据导入之前,还是有更好的方法?
我找遍了 SO - 但找不到有关多个 ODBC 连接的信息
编辑:
Dim qry As WorkbookConnection
For Each qry In ActiveWorkbook.Connections
qry.Refresh
DoEvents
Next qry
我相信你的
Dim qry As Connections
应该阅读
Dim qry As WorkbookConnection
ActiveWorksheets.Connections.Item property returns an object of type WorkbookConnection。如果您尝试一次刷新一个连接,就像您的 For Each
语句中显示的那样,该对象表示使用 Refresh
等方法的单个连接,而不是所有连接的集合。
我设法解决了这个问题。所以以后有需要的朋友可以看看:
Dim qry As WorkbookConnection
For Each qry In ActiveWorkbook.Connections
qry.ODBCConnection.BackgroundQuery = False
qry.Refresh
qry.ODBCConnection.BackgroundQuery = True
Next qry
虽然看起来不像BackgroundQuery = True/False
这里看起来不重要。关闭它意味着当您 qry.Refresh 时,它会提取数据 并 刷新它。
同样使用 For Each qry
意味着我不必写出 20 次,我可以查看每个连接并关闭它们,刷新,然后重新打开它们
我正在使用一组脚本,通过 ODBC 从 iSeries 中提取大量不同的数据。
ActiveWorksheets.RefreshAll
不起作用,因为它没有给 运行 后台查询留出足够的时间
我已经尝试了下面的方法,但没有用
Dim qry As Connections
'Set qry =
For Each qry In ActiveWorksheets.Connections
qry.BackgroundQuery = False
qry.RefreshAll
DoEvents
Next qry
这给了我预期的 Error 424
对象。
我不希望在这里使用 Set qry =
,因为我需要 运行 通过 30 个不同的连接
我们暂时称它们为 connection1、connection2 等,因为它们的名字到处都是
最简单的方法是停止后台查询,刷新,激活后台查询-在数据导入之前,还是有更好的方法?
我找遍了 SO - 但找不到有关多个 ODBC 连接的信息
编辑:
Dim qry As WorkbookConnection
For Each qry In ActiveWorkbook.Connections
qry.Refresh
DoEvents
Next qry
我相信你的
Dim qry As Connections
应该阅读
Dim qry As WorkbookConnection
ActiveWorksheets.Connections.Item property returns an object of type WorkbookConnection。如果您尝试一次刷新一个连接,就像您的 For Each
语句中显示的那样,该对象表示使用 Refresh
等方法的单个连接,而不是所有连接的集合。
我设法解决了这个问题。所以以后有需要的朋友可以看看:
Dim qry As WorkbookConnection
For Each qry In ActiveWorkbook.Connections
qry.ODBCConnection.BackgroundQuery = False
qry.Refresh
qry.ODBCConnection.BackgroundQuery = True
Next qry
虽然看起来不像BackgroundQuery = True/False
这里看起来不重要。关闭它意味着当您 qry.Refresh 时,它会提取数据 并 刷新它。
同样使用 For Each qry
意味着我不必写出 20 次,我可以查看每个连接并关闭它们,刷新,然后重新打开它们