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

Вниз

Проблеммка - Визуальные компоненты - При обрабтке большой базы   Найти похожие ветки 

 
Stenkz ©   (2003-01-20 08:36) [0]

При обрабтке большой базы, примерно 120 000 записей, на форме отключаются визуальные компоненты, например ProgreesBar и включаются только при окончании цикла. Например здесь. Pb1 - прогресс бар
Вот пример кода:
Pb1.Position:=0;
Pb1.Max:=TPr_Cred.RecordCount;
Lproc.Caption:="0%";
while (not TPr_Cred.EOF )do
begin
PB1.Position:=TPr_Cred.RecNo;
LProc.Caption:=FloatToStr(RoundTo PB1.Position/Pb1.Max*100,-2))+" %";
TPr_Cred.Delete;
end;

Дело приосходит на WinXp


 
Соловьев   (2003-01-20 09:27) [1]

Вызови метод Update. А лучше всего в отдельном потоке сделай прогресс...


 
Johnmen ©   (2003-01-20 09:30) [2]

Application.ProcessMessages последней строкой цикла


 
BorisUK ©   (2003-01-20 09:33) [3]

Pb1.Position:=0;
Pb1.Max:=TPr_Cred.RecordCount;
Lproc.Caption:="0%";
Application.ProcessMessages;
while (not TPr_Cred.EOF )do
begin
PB1.Position:=TPr_Cred.RecNo;
PB1.Refresh;
LProc.Caption:=FloatToStr(RoundTo PB1.Position/Pb1.Max*100,-
2))+" %";
LProc.Refresh;
TPr_Cred.Delete;
end;
Ну и в потоке такие вещи делать конечно правильнее.
Главное на время выполнения доступ к таблице залочить!


 
Johnmen ©   (2003-01-20 09:41) [4]

>BorisUK © (20.01.03 09:33)
>Ну и в потоке такие вещи делать конечно правильнее.

В чем правильность, брат ?


 
111   (2003-01-20 09:51) [5]

Удалено модератором


 
Stenkz ©   (2003-01-20 12:44) [6]

Братцы - не работает, прогрессбар сразу 100% показывает, и значёк SQl моргает...


 
Digitman ©   (2003-01-20 12:54) [7]

>Stenkz

Ты читал вот это ? <Johnmen> © (20.01.03 09:30) ???



 
Johnmen ©   (2003-01-20 12:56) [8]

Что было сделано ?
(Кстати : PB1.Position:=PB1.Position+1; так правильней...)


 
Stenkz ©   (2003-01-20 13:00) [9]

сделано например <Johnmen> © (20.01.03 09:30)
сделано BorisUK © (20.01.03 09:33)


 
Delirium^.Tremens ©   (2003-01-20 13:02) [10]

Johnmen © (20.01.03 12:56)
> (Кстати : PB1.Position:=PB1.Position+1; так правильней...)

В чем правильность, брат?
Что на счет шага?


 
Johnmen ©   (2003-01-20 13:09) [11]

>Delirium^.Tremens © (20.01.03 13:02)

Никто же не гарантирует корректность RecNo...




 
Delirium^.Tremens ©   (2003-01-20 13:15) [12]

Johnmen © (20.01.03 13:09)
ProgressBar.StepIt; :-)


 
Johnmen ©   (2003-01-20 13:26) [13]

>Delirium^.Tremens © (20.01.03 13:15)

Практически монопенисно... :-)))))))))


 
Stenkz ©   (2003-01-20 13:47) [14]

После того как сделал PB1.Position:=PB1.Position+1
заработало.
Это что RecNo выдавал конец таблицы? С чем это может быть связано?


 
Delirium^.Tremens ©   (2003-01-20 14:04) [15]

Фильтры .. etc.


 
Johnmen ©   (2003-01-20 14:11) [16]

RecNo не поддерживается используемым тобой движком для используемой тобой БД. Вообще про это св-во лучше забыть...


 
Stenkz ©   (2003-01-21 10:36) [17]

Спасибо всем за ответы :) Вери санькс...


 
izyum ©   (2003-01-21 13:15) [18]

В некоторых БД, хоть это и не рекомендуется, можно использовать RecordCount и RecNo. Проблема в том, что, например IB, выдает в РекордСаунт количество уже отфетченных записей, а не реальное их количество в таблице. Для того что бы он показал правильное число записей перед использованием этих свойств сделай NameTable.FetchAll.



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

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

Наверх




Память: 0.5 MB
Время: 0.014 c
1-15559
SergeN
2003-01-28 16:08
2003.02.06
Графика


1-15718
REA
2003-01-27 19:00
2003.02.06
Как сложить динамические массивы?


1-15722
diks
2003-01-27 12:56
2003.02.06
Поиск


14-15930
Шоломицкий
2003-01-21 19:41
2003.02.06
Есть тут программеры из Microsoft?


1-15683
Alexander
2003-01-27 09:17
2003.02.06
При печати создаются spool файлы. Если я задал печать в формате