![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TADOCommand & eoAsyncExecute & RecordsAffected [D7, MSSQL]
stone © (2003-03-13 11:34:00)Как узнать RecordsAffected после TADOCommand.Execute в если ExecuteOptions указано eoAsyncExecute
stone (2003-03-13 14:20:00) [1]Я уже сам понял, что RecordsAffected в этом случае нужно передавать из ADOConnection1ExecuteComplete иначе всегда -1.
В любом случае, СПАСИБО!
sniknik (2003-03-13 14:11:00) [2]> // вот теперь 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 13:42:00) [3]Происходит примерно следующее
procedure...
begin
ADOCommand.Execute;
// ADOConnection.RecordsAffected = -1
... ждем до завершения выполнения
// выполнилось
ShowMessage(IntToStr(RecordsAffected ));
// показывает -1;
end;
// вот теперь ADOConnection.RecordsAffected = положительному значению
stone (2003-03-13 13:31:00) [4]Пробовал. При трассировке смотрю значение - то что надо, но в результат пишет -1.
Сейчас проверю, какое событие возникает раньше по времени.
sniknik (2003-03-13 13:13:00) [5]тогда событие ADOConnection.ExecuteComplete параметр RecordsAffected попробуй.
(если получится, у меня чегото не получалось может именно это)
stone (2003-03-13 13:03:00) [6]
> а обязательно ADOCommand использовать?
В данном случае не принципиально, но я не получаю никакого рекордсета. ADOCommand выполняет скрипты по обработке записей (INSERT, UPDATE, DELETE). В конечном итоге после выполнения скрипта мне нужно знать сколько записей обработано.
sniknik (2003-03-13 12:17:00) [7]а обязательно ADOCommand использовать? для получения рекордсета ADODataSet используй там есть события FetchComplete и FetchProgress.
при завершении ADOCommand.Execute тоже событие возникает на ADOConnection.ExecuteComplete но чтото с ним было не то (именно с асинхронным выполнением, не помню но почемуто отказался его раньше использовать)