Создание постоянного соединения ADODB при открытии рабочей книги / листа - PullRequest
0 голосов
/ 26 июня 2018

Прямо сейчас у меня есть лист Excel, полный сотен (если не тысяч) функций, каждая из которых по отдельности открывает соединение ADODB с моим SQL Server, выполняет команду, а затем закрывает соединение - это привело к некоторым длительным периодам ожидания при обновлении данных.

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])

... но у меня возникают проблемы, связанные с тем, что "Set" не разрешен вне функции / подпрограммы. Так есть ли способ сохранить соединение, и я просто продолжаю выполнять команды через него?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...