Использование VBA для вызова хранимой процедуры на SQL сервере, передавая один параметр. Я получаю ошибку, многошаговая старая БД - PullRequest
0 голосов
/ 05 февраля 2020

Ходить кругами по этому вопросу. Я использую VBA для вызова хранимой процедуры для извлечения некоторых данных с сервера SQL.

Он передает один параметр, который является датой оценки. Я протестировал эту SQL серверную хранимую процедуру, и она отлично работает в sql со всеми датами. Теперь странно то, что запрос отлично работает с VBA и SQL для дат 31.10.2009 и предыдущих, но для 30.11.2009 и 31.12.2009 я получаю ошибку

Ошибка времени выполнения '-20147217887 (8004e21)': при многоэтапной операции OLe DB возникли ошибки.

Я не могу понять, почему он будет работать для некоторых дат, но не для других, когда он работает для всех дат непосредственно в SQL. Заранее спасибо.

Вот код VBA:

 Sub GroupExperience()

     'SQL code
     Dim ValDate As Date

     ValDate = Format(Range("ValDate"), "mm-dd-yyyy")

     Dim rs As ADODB.Recordset
     Dim cnSQL As ADODB.Connection
     Dim sqlcommand As ADODB.Command, prm As Object

     Set cnSQL = New ADODB.Connection
     cnSQL.Open "Provider=SQLOLEDB; Data Source=bddc1didw1;Initial Catalog=Actuarial; Trusted_connection=Yes; Integrated Security='SSPI'"

     Set sqlcommand = New ADODB.Command
     sqlcommand.ActiveConnection = cnSQL

     'GroupExperience

     sqlcommand.CommandType = adCmdStoredProc
     sqlcommand.CommandText = "[HRT\akapur].[AllGroupExperience]"
     Set prm = sqlcommand.CreateParameter("ValDate", adDate, adParamInput)

     sqlcommand.Parameters.Append prm
     sqlcommand.Parameters("ValDate").Value = ValDate
     Set rs = New ADODB.Recordset
     rs.CursorType = adOpenStatic
     rs.LockType = adLockOptimistic
     rs.Open sqlcommand

     Sheets("Experience Data").Range("A2").CopyFromRecordset rs

       Dim pt As PivotTable
       Set pt = Sheets("Experience").PivotTables("PivotTable1")

       pt.RefreshTable

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