首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel:使用VBA执行SQL过程--允许用户继续工作--不挂起Excel应用程序

Excel:使用VBA执行SQL过程--允许用户继续工作--不挂起Excel应用程序
EN

Stack Overflow用户
提问于 2019-05-16 01:03:11
回答 1查看 215关注 0票数 0

我有几种从Excel VBA执行存储过程的方法。事实上,我甚至对将该过程的结果返回到Excel都不感兴趣,我只需要启动该过程。然而,当程序正在运行时,Excel会“挂起”,因为客户无法使用Excel,特别是当程序运行时间为5分钟或更长时间时。

我研究了其他解决方案,人们在单个工作簿中实例化一个新的应用程序,但不清楚如何在该上下文中执行该过程。另一种解决方案是在后台打开第二个工作簿(对用户隐藏),并在该工作簿打开时自动运行宏,但我不知道何时关闭它。

我调用这个过程的代码,请注意,这有一个超时问题,任何关于这一点的想法也值得感谢:

代码语言:javascript
复制
Sub Workbook_Open()

 'Create connection string variable
    Dim item As String
    Dim con As New ADODB.Connection

    'Build the connection string
    con.ConnectionString = "Provider=SQLNCLI11;" _
             & "Server=MyServerName;" _
             & "Database=Oracle;" _
             & "Integrated Security=SSPI;"

   'Open the connection
    con.Open

    item = vbNullString

    item = "exec dbo.SP_ORACLE_PULL"
    con.Execute (item)

   'Close the connection   
    con.Close

 End Sub

有谁有什么推荐的方法吗?最好是打开隐藏在后台的工作簿,然后从那里运行该过程?我如何知道何时关闭该工作簿并将状态传递回原始工作簿?那还会“挂”所有打开Excel工作簿的客户吗?我找遍了所有地方,但我没有找到这种情况下的任何代码示例。

这些都是权宜之计,直到我们可以在4-6个月内正式确定一个更企业的解决方案。

EN

回答 1

Stack Overflow用户

发布于 2019-05-16 01:18:35

如果使用WithEvents声明连接等,则ADO支持异步操作

请看这里,例如:https://support.microsoft.com/en-us/help/190988/how-to-open-ado-recordsets-asynchronously-using-withevents

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56154368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档