Текущий архив: 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.47 MB
Время: 0.01 c