Мне нужно вызвать хранимую процедуру из Excel, передав несколько значений, введенных пользователем в качестве параметров. Я почти достиг этого с помощью макроса, используя следующую команду Parameters.Использование CreateParameters с переменным размером параметра
Set ADOCmd = New ADODB.Command
With ADOCmd
.Parameters.Append .CreateParameter("@Department", adChar, adParamInput, Len(cDept), cDept)
.Parameters.Append .CreateParameter("@title", adChar, adParamInput, Len(cTitle), cTitle)
.Parameters.Append .CreateParameter("@name", adChar, adParamInput, Len(cName), cName)
.Parameters.Append .CreateParameter("@email", adChar, adParamInput, Len(cEmail), cEmail)
.Parameters.Append .CreateParameter("@tel_no", adChar, adParamInput, Len(cTel), cTel)
.Parameters.Append .CreateParameter("@mob_no", adChar, adParamInput, Len(cMob), cMob)
End With
Это будет работать нормально, если все значения были заполнены пользователем. Однако, если что-то осталось пустым, возникает следующая ошибка.
Run-time error:'3708':
Parameter object is improperly defined. Inconsistent or incomplete information was provided.
Я убежден, что это связано с тем, что параметр Размер, переданный в функции CreateParameter, равен нулю. Есть ли способ обойти это? Должен ли он принимать ноль в качестве допустимого размера, если введенная строка равна нулю?
Заранее спасибо.
Итак, столбцы в таблице являются char, а не varchar? –
Длина должна быть максимальным размером для параметра, поэтому это длина параметра, объявленного в хранимой процедуре, а не длина передаваемой в нее строки. –
Алекс К и Том Х, хороший крик, спасибо. Я уже пытался использовать максимальный размер для столбца, но затем он добавил пробелы в конец строк. Я изменил это на adVarChar и добавил максимальный размер столбца снова как Размер, и он удалил пробелы. Спасибо за помощь! – ryansin