vba - 在工作簿/工作表打开时创建持久 ADODB 连接
问题描述
现在我有一个 Excel 工作表,其中包含数百个(如果不是数千个)函数,每个函数都单独打开到我的 SQL Server 的 ADODB 连接,执行命令,然后关闭连接 - 这导致刷新数据时需要等待很长时间.
Public Function Alere(StoredProcedure As String, paramItem As Range)
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
connString = [connection string]
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.Open sConnString
Set rs = conn.Execute("[query]")
If Not rs.EOF Then
Alere = rs(0)
Else
Alere = "-"
End If
End Function
是否可以在 worksheet_activate() 上打开我的连接,并让它持续存在,以便我可以随时引用它?我尝试将以下内容放在模块的顶部:
Public conn As ADODB.Connection
Public rs As ADODB.Recordset
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.Open ("DSN=" & Worksheets("Variables").[H2] & ";Trusted_Connection=Yes;WSID=" & Environ("COMPUTERNAME") & ";DATABASE=" &
Worksheets("Variables").[H3])
...但是我遇到了有关在函数/子之外不允许“设置”的问题。那么有什么方法可以让连接持续存在,我只是继续通过它执行命令?
解决方案
推荐阅读
- python-3.x - Python 套接字模块。服务器没有发回它收到的数据
- ios - 从 Objective-C 类调用 Swift 方法的语法
- file - 如何使用 Blazor 上传本地 json 文件
- php - php从数组json输出中获取值
- java - Jackson JsonMappingException 继续并获得完整的报告
- django - 除了视图,是否有等效的 django-hitcount 模板标签?
- python - 电子邮件的python IMAP内容包含一个字符串
- unix - 如何在 unix 的列中找出大于 10 的间隙?
- java - javax.net.ssl.SSLHandshakeException:在 Raspberry Pi 上运行 java 程序时出错
- amazon-web-services - 同步 RDS DB 和 Cognito 的最佳方式