Между именем процедуры и первым параметром «pr_Load» & CID должен быть пробел. Целочисленный параметр не нуждается ни в кавычках, ни в NULL, а дата, вероятно, лучше всего отформатирована гггг-мм-дд. Например,
With Sheets("User Input")
Do Until .Cells(intImportRow, 1) = ""
CID = .Cells(intImportRow, 1)
rdate = .Cells(intImportRow, 2)
sql = "pr_load " & CID
If rdate = "" Then
sql = sql & ",NULL"
Else
sql = sql & ",'" & Format(rdate, "yyyy-mm-dd") & "'"
End If
Debug.Print intImportRow, sql
con.Execute sql
intImportRow = intImportRow + 1
Loop
End With
Если вы хотите использовать параметры, попробуйте
Dim cmd As Object
Set cmd = CreateObject("ADODB.Command")
With cmd
.ActiveConnection = con
.CommandType = adCmdStoredProc
.CommandText = "pr_load"
.Parameters.Append .CreateParameter("P1", adInteger, adParamInput)
.Parameters.Append .CreateParameter("P2", adDate, adParamInput)
End With
Dim intImportRow As Long, CID As Integer, rdate As Date, sqldate As String
intImportRow = 2
With Sheets("User Input")
Do Until .Cells(intImportRow, 1) = ""
CID = .Cells(intImportRow, 1)
rdate = .Cells(intImportRow, 2)
cmd.Parameters(0).Value = CID
If rdate = 0 Then
cmd.Parameters(1).Value = Null
sqldate = "NULL"
Else
cmd.Parameters(1).Value = rdate
sqldate = Format(rdate, "YYYY-YY-DD")
End If
Debug.Print intImportRow, CID, sqldate
cmd.Execute
intImportRow = intImportRow + 1
Loop
End With