Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Вызов хранимой процедуры через TADODataSet


Автор: SATYR 6.7.2005, 16:42
TADODataSet *ADODS;

когда хранимая процедура "SEL_CORD5" имела два параметра все работало просто в лёт.
Код

void __fastcall TRepMast::BitBtn1Click(TObject *Sender){
  ADODS->CommandText="EXEC SEL_CORD5 '"+LowD->Text+"','"+HiD->Text+"'";
  ADODS->Open();



как только я ее модифицировал и добавил еще парочку
Код

void __fastcall TRepMast::BitBtn1Click(TObject *Sender){

  ADODS->CommandText="EXEC SEL_CORD5 '"+LowD->Text+"','"+HiD->Text+"','"+SetN->VirMarkList()+"','"+SetN->IPMarkList()+"'";
  ADODS->Open();


то при выполнении начало вылетать следующее исключение "Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done."

Подскажите вчем может быть причина?

Автор: _hunter 6.7.2005, 16:57
толи в параметрах ошибся толи процедура кривая
для начала вызовибез всяких внешних параметров:
ADODS->CommandText="EXEC SEL_CORD5 ...";
посмотри что будет

Автор: MaximNR 6.7.2005, 17:04
возможно какойнить триггер висит и он срабатывает уже после выполнения процедуры и воздействует на таблицу, возвращаемую процедурой?

Автор: SATYR 6.7.2005, 17:09
Тригера не висит эт точно.
В SQL Analyzer тоже исправно работает с тестовыми параметрами

Автор: _hunter 6.7.2005, 17:24
а в коде?

Автор: MaximNR 6.7.2005, 17:29
ну в общем, сообщение об ошибке можно перевести так, что
"многошаговая операция вызвала ошибку. ПРоверьте каждый шаг"

т.е. возможно, например, что процедура получила данные и вызвала какие-то изменения в чем-то, а это что-то при отображении содержит еще старые данные(допустим в каких-то контролах и т.п.).

можно попробовать задисэйблить все контролы вначале операции, а потом их обновить и заенеблить.

Автор: SATYR 7.7.2005, 08:39
Народ ещё вопрос не потеме. Случайно не подскажете в MS SQL есть какой-нить пошаговый отладчик кода?

Автор: _hunter 7.7.2005, 10:31
в разделе по SQL и спроси...

Автор: SATYR 7.7.2005, 10:50

Нашел в чем проблема.)
В моем случае хранимка вообще не затрагивает ничего подобного контролам и не вносит никаких изменений ни куда только возвращает выбранный ряд.

Если кому интересно:
Похоже что здесь роль играет какого типа курсор испрользуется в TADODataSet. Если CyrsorLocation = clUseClient то все ок и всё работает если CyrsorLocation =clUseServer то генерится выше сказанное искл. Если не поможет то можно поменять CyrsorType. Либо комбонации этих двух св-в.

Определено методом тыка )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)