Форум: "Базы";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];
ВнизProgressBar во время SQL запроса. Найти похожие ветки
← →
Данила (2003-10-09 13:18) [0]Мастера! :)
Есть база на access"e. Юзаю ADO. Как "запустить" progressbar пока идет выборка(select ...) по таблице?
← →
Данила (2003-10-09 13:49) [1]Неужели никто не знает ? Абыдна :(
← →
stone (2003-10-09 13:50) [2]см. в справке примеры по OnFetchProgress
← →
Danilka (2003-10-09 13:51) [3]никак нельзя.
ты отдаешь запрос серверу, а от него уже получаешь результат запроса, что там он делает у себя унутрях он не говорит.
← →
Danilka (2003-10-09 14:00) [4][2] stone © (09.10.03 13:50)
?
Вообще-то я через АДО не ломился, и что, работает? Честно говоря, не представляю как это может работать, не представляю как сам сервак может знать, сколько он еще будет запрос отрабатывать.
← →
Данила (2003-10-09 14:06) [5]2Danilka.
Не, не работет, если повесить на FetchProgress какой-нить ShowMessage. То этот ShowMessage ниразу не вылетает во время запроса :(
← →
Delirium (2003-10-09 14:11) [6]Время исполнения запроса делится на 2 этапа: собственно исполнение запроса на сервере, это не протоколируется и время передачи данных - а вот это можно протоколировать в ADO в асинхронном режиме в событии OnFetchProgress
← →
Данила (2003-10-09 14:17) [7]2Delirium ©
"и время передачи данных - а вот это можно протоколировать"
Пишем как доктор прописал... Но :(.
form_index.label_progress.caption := "Percent complete: " + IntToStr(Trunc(Progress / MaxProgress * 100)) + "%";
Application.ProcessMessages;
← →
Danilka (2003-10-09 14:18) [8][6] Delirium © (09.10.03 14:11)
Понятно.
Имеет смысл при всяких экспортах больших таблиц, в других случаях, как правило, второй этап намного быстрее первого, или оба быстрые.
Вобщем, экзотика.
← →
Delirium (2003-10-09 15:01) [9]> Данила (09.10.03 14:17) [7]
Вот набросал по быстрому..
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls;
const ASync=WM_USER+2000;
type
TForm1 = class(TForm)
Button1: TButton;
ADOQuery1: TADOQuery;
ADOConnection1: TADOConnection;
procedure ADOQuery1FetchProgress(DataSet: TCustomADODataSet; Progress,
MaxProgress: Integer; var EventStatus: TEventStatus);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
procedure ASyncMsg(var Msg:TMessage); message ASync;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ASyncMsg(var Msg:TMessage);
begin
Caption:=Caption+IntToStr(Msg.LParam)+";";
end;
procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet;
Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
begin
PostMessage(Handle,ASync,0,Progress);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Open;
end;
end.
← →
blackman (2003-10-09 15:25) [10]Если знаешь сколько времени приблизительно выполняется можно по таймеру ...
http://delphiclub.ru/forums/index.php?act=ST&f=4&t=335&s=2eb80ef96e2f643ba2154a48c3445738
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c