Доступ к хранимой процедуре SQL Server (без оператора SELECT) из Excel VBA, в идеале без использования Excel Data Connections? - PullRequest
1 голос
/ 24 февраля 2011

Я пытаюсь создать форму VBA, которая выполняет хранимую процедуру SQL Server для кэширования данных, прежде чем делать что-либо еще. В идеале я предпочел бы не использовать подключение для передачи данных Excel, потому что тогда я не смогу экспортировать его в новую рабочую книгу с минимальными усилиями - было бы неплохо содержать всю информацию в файле формы.

Основной способ, которым я знаю, чтобы подключить VBA к базе данных, это использовать следующий код:

Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
cnn.Open ConnectionString
rst.Open QueryText, cnn, adOpenDynamic

/*Whatever you're doing to the data goes here*/

rst.Close
cnn.Close

Проблема, с которой я сталкиваюсь, заключается в том, что процесс кэширования не возвращает набор данных (даже пустой), и этот тип соединения вызывает головокружение, если данные не возвращаются. И я бы предпочел не изменять процедуру, если мне не нужно.

Есть ли возможное решение в рамках этих ограничений? Или я просто слишком плаксив и должен смириться с этим и использовать соединение для передачи данных Excel или что-то в этом роде?

1 Ответ

3 голосов
/ 24 февраля 2011

Я думаю, что вы ищете ADODB.Command. Попробуйте что-то вроде этого:

Dim cnn As New ADODB.Connection
Dim cmd As ADODB.Command

cnn.Open ConnectionString
Set cmd = New ADODB.Command

With cmd
    .ActiveConnection = cnn
    .CommandText = "EXEC spNameHere param1"
    .CommandType = adCmdText
    .Execute
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...