При работе над проектом VBA данные извлекаются из базы данных sql. Запрос работает с другим хранимым процессом, который работает только с числами. Я изменил val на вариант, и он правильно вытягивает значение F2. Когда я пытаюсь сгенерировать вывод, возникает ошибка. Любая помощь будет оценена.
Изменено несколько типов, таких как adParamInput, но ничего не получилось так хорошо.
Sub SQLDatabase_StoredProc1()
Dim rs As ADODB.Recordset
Dim cnSQL As ADODB.Connection
Dim sqlCommand As ADODB.Command, prm As Object
Dim colOffset As Integer
colOffset = 1
Dim qf As Object, numOfRecordsAffected As Long
Dim val As Variant
val = Range("F2").Value
'Dim val As String
'val = Range("F2").Value
Sheets("database").Select
Cells.Range("A1:D100").ClearContents
Set cnSQL = New ADODB.Connection
cnSQL.Open "Provider=SQLOLEDB; Integrated Security = sspi; Initial Catalog = [database]; Data Source = [server]"
Set sqlCommand = New ADODB.Command
sqlCommand.ActiveConnection = cnSQL
sqlCommand.CommandType = adCmdStoredProc
sqlCommand.CommandText = "OwnershipTestProc"
Set prm = sqlCommand.CreateParameter("ID", adVarChar, adParamInput)
sqlCommand.Parameters.Append prm
sqlCommand.Parameters("ID") = val
Set rs = New ADODB.Recordset
rs.CursorType = adOpenStatic
rs.LockType = adLockOptimistic
rs.Open sqlCommand
If rs.EOF Then
MsgBox ("There is no data for the Tax ID. rs.eof = " & rs.EOF)
Else
MsgBox ("# of records = " & rs.RecordCount)
ActiveSheet.Cells(2, 2).CopyFromRecordset rs
For Each qf In rs.Fields
Range("A1").Offset(0, colOffset).Value = qf.name
colOffset = colOffset + 1
Next qf
End If
rs.Close
Set rs = Nothing
End Sub
Цель состоит в том, чтобы сохраненный процесс выполнялся и выводил данные. Параметр, передаваемый в («ID»), не должен быть ограничен только числами.