Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

быстро пробежать по записям


Страницы:   1 2

321 ©   (2009-02-20 12:26:00) 

Есть ли способ быстро пробежать по записям в таблице:
В таблице 50 000 записей.
делаю так, но на все затрачивается около минуты:


FieldID := Query.FieldByName('ID');
while not Query.Eof do
begin
  Items.add(FieldID.AsString);
  cmp_QueryByField_.Next;
end;


MsGuns   (2009-02-21 18:35:00) [1]

Чтобы не тормозило, нужно блокировать все события датасета, а также его коллекции филдов, что иногда бывает затруднительно. ИМХО, проще создать клон датасета и по нему "бегать", не "напрягая" отображаемые контролы.


Игорь Шевченко   (2009-02-20 16:56:00) [2]

sniknik ©   (20.02.09 16:32) [21]

Зато больше на 4 строчки кода. Проверки выполняются мгновенно, а код читать труднее. Несогласная я.


KSergey   (2009-02-20 16:40:00) [3]

> Anatoly Podgoretsky ©   (20.02.09 16:22) [19]
> C такой, что если будет ошибка во внешнем блоке, а именно там DisableControls, то EnableControls не отработает.

По-моему, вы невнимательно прочитали [2]. Непосредственно за DisableControls идет try, заканчивайющийся finaly с Enable.


Ega23   (2009-02-20 16:38:00) [4]


> C такой, что если будет ошибка во внешнем блоке, а именно
> там DisableControls, то EnableControls не отработает.


Где там ошибка может быть? В DisableControls?


sniknik   (2009-02-20 16:32:00) [5]

> нафига ?
на одну проверку в 2х процедурах меньше.
if (FUpdateCount = 0) and Assigned(...) then ...
если FUpdateCount = 0 то Assigned не будет проверятся. ну и потом ради единообразия, раз много добавляешь значит должно быть отключено.
и неизвестно от чего Items (то что Ega23 заменил на lst).


Dennis I. Komarov   (2009-02-20 16:29:00) [6]


> Поместить их в мемо, чего непонятного?

А я грешным делом подумал в ComboBox или ListBox ;)

Может автор все-таки откликнется...


Anatoly Podgoretsky   (2009-02-20 16:22:00) [7]

> Ega23  (20.02.2009 15:34:11)  [11]

C такой, что если будет ошибка во внешнем блоке, а именно там DisableControls, то EnableControls не отработает.


Игорь Шевченко   (2009-02-20 16:17:00) [8]


> Ega23 ©   (20.02.09 13:00) [2]
> +
> lst.BeginUpdate;
> lst.EndUpdate;


нафига ?


Ega23   (2009-02-20 16:16:00) [9]


> Обясните мне, плз, зачем контролу 50000 записей?


Поместить их в мемо, чего непонятного?


Sergey13   (2009-02-20 16:15:00) [10]

> [15] Dennis I. Komarov ©   (20.02.09 16:09)

Так больше нету. 8-)


Dennis I. Komarov   (2009-02-20 16:09:00) [11]

Обясните мне, плз, зачем контролу 50000 записей?


KSergey   (2009-02-20 15:41:00) [12]

ну вот, sniknik ©   (20.02.09 15:39) [12]  уже все сказал...


KSergey   (2009-02-20 15:40:00) [13]

> Ega23 ©   (20.02.09 13:00) [2]
>    Query.DisableControls;

>      Query.EnableControls;

Вероятнее всего это есть смысл сделать у контрола, в котром набиваются Items. Хотя если к Query что-то привязано - то и там не плохо, конечно.


sniknik   (2009-02-20 15:39:00) [14]

Ega23 ©   (20.02.09 13:00) [2]
+
lst.BeginUpdate;
lst.EndUpdate;


Ega23   (2009-02-20 15:34:00) [15]


> DisableControls и EnableControls должны быть в одном блоке  try


С какого перепугу?


Anatoly Podgoretsky   (2009-02-20 14:54:00) [16]

> Ega23  (20.02.2009 13:00:02)  [2]

DisableControls и EnableControls должны быть в одном блоке try


Anatoly Podgoretsky   (2009-02-20 14:54:00) [17]

> Ega23  (20.02.2009 13:00:02)  [2]

DisableControls и EnableControls должны быть в одном блоке try


Sergey13   (2009-02-20 14:03:00) [18]

> [0] 321   (20.02.09 12:26)

> на все затрачивается около минуты

> while not Query.Eofdo
> begin
>  Items.add(FieldID.AsString);
>   cmp_QueryByField_.Next;
> end;

ИМХО странно что вообще заканчивается.


Dennis I. Komarov   (2009-02-20 13:44:00) [19]

Ах, забыл - телепатор :)


Ega23   (2009-02-20 13:29:00) [20]


> Я всмысле, мало ли чего там за Items...
>


99% что TStrings


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо