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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
1-98734
Маша
2003-10-19 12:45
2003.10.30
Распечатка


4-98916
Um
2003-08-27 08:29
2003.10.30
кнопки на taskbar


1-98550
GLum
2003-10-20 15:07
2003.10.30
Автоматическое нажатие RadioButton1, как сделать???


1-98544
yaJohn
2003-10-20 14:46
2003.10.30
W2K + HKEY_LOCAL_MACHINE + PowerUser = грабли


14-98852
ИМХО
2003-10-09 19:10
2003.10.30
Футбол и мафия