Возникли проблемы при выполнении хранимой процедуры - PullRequest
1 голос
/ 11 февраля 2020

Когда выполняется следующий код 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

1 Ответ

0 голосов
/ 11 февраля 2020

В этой строке кода ...

.Parameters.Append .CreateParameter ("@ Days", adInteger,, DayValue)

Я пропустил значение adParamInput. Код должен выглядеть следующим образом ...

.Parameters.Append .CreateParameter ("@ Days", adInteger, adParamInput,, DayValue)

Я потратил много часов, пытаясь понять это вне.

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