Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.03.31;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.009 c
1-100289
Berezne
2003-03-19 13:19
2003.03.31
Глюки Qreport или Windows???


14-100370
LazorenkoX
2003-03-13 10:45
2003.03.31
MySQL


3-100188
Иксик
2003-03-13 12:40
2003.03.31
Компоненты прямого доступа


1-100273
Somofly
2003-03-19 10:50
2003.03.31
Серийный HDD шника


1-100291
ZeroDivide
2003-03-19 09:08
2003.03.31
.Net ругается на Unsafe (type, code...)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский