Ходить кругами по этому вопросу. Я использую 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