Когда выполняется следующий код VBA, он передает следующую строку в SQL с миром «default» вместо необходимого целого числа. Как вы можете видеть в приведенном ниже коде, я даже убедился, что то, что передается, является целым числом, объявив его как таковое.
Когда я запускаю профилировщик, вот что встречается:
exec dbo.Dispensing_Days '9999',default
Код VBA:
Sub ADO_DispensingDays()
Dim DayValue As Integer
DayValue = Forms("PatientRecordTabbedF").DaysDispensed.Value
Call Module4.ADO ' Opens the oConn SQL connection
Dim cmdObjCmd As New ADODB.Command
With cmdObjCmd
.ActiveConnection = oConn
.CommandType = adCmdStoredProc
.CommandTimeout = 15
.CommandText = "dbo.Dispensing_Days"
.Parameters.Append .CreateParameter("@PatientID", adVarChar, adParamInput, 16, Forms("PatientRecordTabbedF").PatientID.Value)
.Parameters.Append .CreateParameter("@Days", adInteger, , DayValue)
.Execute
End With
Set cmdObjCmd = Nothing
Call Module4.ADO_Close ' Closes the oConn SQL connection
End Sub