|
|
|
| Доброго времени суток.
Я тут уже спрашивал про параметры в хранимых процедурах.
Передавать параметры процедуры через входные параметры отчёта вполне удобно. А вот как быть, если нужно просто запустить хранимую процедуру на исполнение? Скажем, процедуру с INSERT INTO, или там UPDATE?
Я выкручиваюсь так: Создаю отдельную форму, источником записей у неё эта самая процедура. Во входных параметрах указываю поля другой формы, из которых следует брать параметры. Больше ничего в этой форме нету.
И открываю её командой DoCmd.OpenForm "ФормаДляПроцедуры".
Чтобы не вылетала по ошибке, прописываю On Error Resume Next.
Я не пытаюсь понять как это работает, но в итоге "ФормаДляПроцедуры" не открывается, а процедура благополучно получает параметры и выполняется.
Понимаю, что это все жутко коряво. Вдобавок, для каждой процедуры нужно создавать отдельную форму.
Подскажите, как эта задача решается правильно. | |
|
| |
|
|
|
| а если
connection.Execute "Exec sp_UpdateOrder 'Строка', 245"
или
recordset.open "Exec sp_UpdateOrder 'Строка', 245", ....... | |
|
| |
|
|
|
| Ага.
Хорошо бы понять что тут есть что.
В хелпе Execute Method (ADO Connection) как то совсем по другому описан.
Я запустил такую строку:
CurrentProject.Connection.Execute "dbo.AddGroup", , 4
И получил ожидаемый ответ: “Procedure "AddGroup" expects parameter @Параметр1 which was not supplied” | |
|
| |
|
|
|
| Ну в общем-то что ту не понятно?
Тут фактически дво объекта работает метод execute, со своим синтаксисом + ключевое слово
EXECUTE (EXEC) которое выполняет процедуру
с помощью метода Execute (или Open) на сервер отправляется СТРОКА содержащая
ключевое слово EXECUTE (EXEC) + имя процедуры + параметры.
см. Help MS SQL по EXEC и хранимым процедурам.
Попробуйте так:
CurrentProject.Connection.Execute "EXEC dbo.AddGroup, , 4"
|
| |
|
| |
|
|
|
| Шикарно!
Работает строка вида "EXEC dbo.AddGroup @Параметр1=3, @Параметр2=5"
Премного благодарен! | |
|
| |