Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.31;
Скачать: CL | DM;

Вниз

TADOCommand & eoAsyncExecute & RecordsAffected   Найти похожие ветки 

 
stone ©   (2003-03-13 11:34) [0]

Как узнать RecordsAffected после TADOCommand.Execute в если ExecuteOptions указано eoAsyncExecute


 
sniknik ©   (2003-03-13 12:17) [1]

а обязательно ADOCommand использовать? для получения рекордсета ADODataSet используй там есть события FetchComplete и FetchProgress.

при завершении ADOCommand.Execute тоже событие возникает на ADOConnection.ExecuteComplete но чтото с ним было не то (именно с асинхронным выполнением, не помню но почемуто отказался его раньше использовать)


 
stone ©   (2003-03-13 13:03) [2]


> а обязательно ADOCommand использовать?


В данном случае не принципиально, но я не получаю никакого рекордсета. ADOCommand выполняет скрипты по обработке записей (INSERT, UPDATE, DELETE). В конечном итоге после выполнения скрипта мне нужно знать сколько записей обработано.


 
sniknik ©   (2003-03-13 13:13) [3]

тогда событие ADOConnection.ExecuteComplete параметр RecordsAffected попробуй.
(если получится, у меня чегото не получалось может именно это)


 
stone ©   (2003-03-13 13:31) [4]

Пробовал. При трассировке смотрю значение - то что надо, но в результат пишет -1.
Сейчас проверю, какое событие возникает раньше по времени.


 
stone ©   (2003-03-13 13:42) [5]

Происходит примерно следующее

procedure...
begin
ADOCommand.Execute;
// ADOConnection.RecordsAffected = -1
... ждем до завершения выполнения
// выполнилось
ShowMessage(IntToStr(RecordsAffected ));
// показывает -1;
end;

// вот теперь ADOConnection.RecordsAffected = положительному значению



 
sniknik ©   (2003-03-13 14:11) [6]

> // вот теперь ADOConnection.RecordsAffected = положительному значению
то есть получилось?

у меня получается
procedure TForm1.ADOConnection1ExecuteComplete(Connection: TADOConnection;
RecordsAffected: Integer; const Error: Error;
var EventStatus: TEventStatus; const Command: _Command;
const Recordset: _Recordset);
begin
Label1.Caption:= IntToStr(RecordsAffected);
end;

без проблем
при опциях ADOCommand = [eoAsyncExecute,eoExecuteNoRecords]

вызов по кнопке
procedure TForm1.Button4Click(Sender: TObject);
begin
ADOCommand1.CommandText:= "UPDATE ExelMax SET Kod=Kod+1";
ADOCommand1.Execute;
end;

(вспомнил чего не то было, если получать рекордсет то значение RecordsAffected ноль в любом случае, нужно тогда из самого рекордсета брать)


 
stone ©   (2003-03-13 14:20) [7]

Я уже сам понял, что RecordsAffected в этом случае нужно передавать из ADOConnection1ExecuteComplete иначе всегда -1.
В любом случае, СПАСИБО!



Страницы: 1 вся ветка

Текущий архив: 2003.03.31;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
14-100459
PVOzerski
2003-03-13 13:00
2003.03.31
Как восстановить зарегистрированность Delphi?


14-100424
Dms
2003-03-14 11:59
2003.03.31
Как сдвинуть выделенный блок кода влево/вправо ?


6-100363
k-sergey
2003-02-07 08:12
2003.03.31
TIdSMTP- отправляю письмо...а у нас рокси..


14-100389
Зульфикар
2003-03-13 16:18
2003.03.31
Хочу начинать с нуля!


4-100507
diks
2003-02-02 08:08
2003.03.31
Отключение и включение клавы