Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Снова про параметры
 
 автор: Lvm   (04.05.2007 в 18:32)   личное сообщение
 
 

Доброго времени суток.
Я тут уже спрашивал про параметры в хранимых процедурах.
Передавать параметры процедуры через входные параметры отчёта вполне удобно. А вот как быть, если нужно просто запустить хранимую процедуру на исполнение? Скажем, процедуру с INSERT INTO, или там UPDATE?
Я выкручиваюсь так: Создаю отдельную форму, источником записей у неё эта самая процедура. Во входных параметрах указываю поля другой формы, из которых следует брать параметры. Больше ничего в этой форме нету.
И открываю её командой DoCmd.OpenForm "ФормаДляПроцедуры".
Чтобы не вылетала по ошибке, прописываю On Error Resume Next.
Я не пытаюсь понять как это работает, но в итоге "ФормаДляПроцедуры" не открывается, а процедура благополучно получает параметры и выполняется.
Понимаю, что это все жутко коряво. Вдобавок, для каждой процедуры нужно создавать отдельную форму.
Подскажите, как эта задача решается правильно.

  Ответить  
 
 автор: osmor   (05.05.2007 в 17:00)   личное сообщение
 
 

а если
connection.Execute "Exec sp_UpdateOrder 'Строка', 245"
или
recordset.open "Exec sp_UpdateOrder 'Строка', 245", .......

  Ответить  
 
 автор: Lvm   (05.05.2007 в 19:31)   личное сообщение
 
 

Ага.
Хорошо бы понять что тут есть что.
В хелпе Execute Method (ADO Connection) как то совсем по другому описан.
Я запустил такую строку:
CurrentProject.Connection.Execute "dbo.AddGroup", , 4
И получил ожидаемый ответ: “Procedure "AddGroup" expects parameter @Параметр1 which was not supplied”

  Ответить  
 
 автор: osmor   (07.05.2007 в 08:31)   личное сообщение
 
 

Ну в общем-то что ту не понятно?
Тут фактически дво объекта работает метод execute, со своим синтаксисом + ключевое слово
EXECUTE (EXEC) которое выполняет процедуру
с помощью метода Execute (или Open) на сервер отправляется СТРОКА содержащая
ключевое слово EXECUTE (EXEC) + имя процедуры + параметры.
см. Help MS SQL по EXEC и хранимым процедурам.
Попробуйте так:


CurrentProject.Connection.Execute "EXEC dbo.AddGroup, , 4"

  Ответить  
 
 автор: Lvm   (07.05.2007 в 13:25)   личное сообщение
 
 

Шикарно!
Работает строка вида "EXEC dbo.AddGroup @Параметр1=3, @Параметр2=5"
Премного благодарен!

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList