Форум: "Начинающим";
Текущий архив: 2009.04.12;
Скачать: [xml.tar.bz2];
Внизбыстро пробежать по записям Найти похожие ветки
← →
321 (2009-02-20 12:26) [0]Есть ли способ быстро пробежать по записям в таблице:
В таблице 50 000 записей.
делаю так, но на все затрачивается около минуты:
FieldID := Query.FieldByName("ID");
while not Query.Eof do
begin
Items.add(FieldID.AsString);
cmp_QueryByField_.Next;
end;
← →
Dennis I. Komarov © (2009-02-20 12:53) [1]А зачем добавлять куда-то все 50000 записей? Пользователю оно надо? ИМХО надо подумать над логикой...
← →
Ega23 © (2009-02-20 13:00) [2]
var
lst : TStringList;
begin
lst := TStringList.Create;
try
Query.DisableControls;
try
Query.First;
while not Query.Eof do
begin
lst.Add(Query.FieldByName(...).AsString);
Query.Next;
end;
finally
Query.EnableControls;
end;
Memo1.Lines.Assign(lst);
finally
lst.free;
end;
← →
Dennis I. Komarov © (2009-02-20 13:19) [3]
> var
> lst : TStringList;
А это откуда взял?
← →
Ega23 © (2009-02-20 13:22) [4]
> А это откуда взял?
Написал. Пальцами.
← →
Dennis I. Komarov © (2009-02-20 13:27) [5]Я всмысле, мало ли чего там за Items...
← →
Ega23 © (2009-02-20 13:29) [6]
> Я всмысле, мало ли чего там за Items...
>
99% что TStrings
← →
Dennis I. Komarov © (2009-02-20 13:44) [7]Ах, забыл - телепатор :)
← →
Sergey13 © (2009-02-20 14:03) [8]> [0] 321 (20.02.09 12:26)
> на все затрачивается около минуты
> while not Query.Eof do
> begin
> Items.add(FieldID.AsString);
> cmp_QueryByField_.Next;
> end;
ИМХО странно что вообще заканчивается.
← →
Anatoly Podgoretsky © (2009-02-20 14:54) [9]> Ega23 (20.02.2009 13:00:02) [2]
DisableControls и EnableControls должны быть в одном блоке try
← →
Anatoly Podgoretsky © (2009-02-20 14:54) [10]> Ega23 (20.02.2009 13:00:02) [2]
DisableControls и EnableControls должны быть в одном блоке try
← →
Ega23 © (2009-02-20 15:34) [11]
> DisableControls и EnableControls должны быть в одном блоке try
С какого перепугу?
← →
sniknik © (2009-02-20 15:39) [12]Ega23 © (20.02.09 13:00) [2]
+lst.BeginUpdate;
lst.EndUpdate;
← →
KSergey © (2009-02-20 15:40) [13]> Ega23 © (20.02.09 13:00) [2]
> Query.DisableControls;
> Query.EnableControls;
Вероятнее всего это есть смысл сделать у контрола, в котром набиваются Items. Хотя если к Query что-то привязано - то и там не плохо, конечно.
← →
KSergey © (2009-02-20 15:41) [14]ну вот, sniknik © (20.02.09 15:39) [12] уже все сказал...
← →
Dennis I. Komarov © (2009-02-20 16:09) [15]Обясните мне, плз, зачем контролу 50000 записей?
← →
Sergey13 © (2009-02-20 16:15) [16]> [15] Dennis I. Komarov © (20.02.09 16:09)
Так больше нету. 8-)
← →
Ega23 © (2009-02-20 16:16) [17]
> Обясните мне, плз, зачем контролу 50000 записей?
Поместить их в мемо, чего непонятного?
← →
Игорь Шевченко © (2009-02-20 16:17) [18]
> Ega23 © (20.02.09 13:00) [2]
> +
> lst.BeginUpdate;
> lst.EndUpdate;
нафига ?
← →
Anatoly Podgoretsky © (2009-02-20 16:22) [19]> Ega23 (20.02.2009 15:34:11) [11]
C такой, что если будет ошибка во внешнем блоке, а именно там DisableControls, то EnableControls не отработает.
← →
Dennis I. Komarov © (2009-02-20 16:29) [20]
> Поместить их в мемо, чего непонятного?
А я грешным делом подумал в ComboBox или ListBox ;)
Может автор все-таки откликнется...
← →
sniknik © (2009-02-20 16:32) [21]> нафига ?
на одну проверку в 2х процедурах меньше.
if (FUpdateCount = 0) and Assigned(...) then ...
если FUpdateCount = 0 то Assigned не будет проверятся. ну и потом ради единообразия, раз много добавляешь значит должно быть отключено.
и неизвестно от чего Items (то что Ega23 заменил на lst).
← →
Ega23 © (2009-02-20 16:38) [22]
> C такой, что если будет ошибка во внешнем блоке, а именно
> там DisableControls, то EnableControls не отработает.
Где там ошибка может быть? В DisableControls?
← →
KSergey © (2009-02-20 16:40) [23]> Anatoly Podgoretsky © (20.02.09 16:22) [19]
> C такой, что если будет ошибка во внешнем блоке, а именно там DisableControls, то EnableControls не отработает.
По-моему, вы невнимательно прочитали [2]. Непосредственно за DisableControls идет try, заканчивайющийся finaly с Enable.
← →
Игорь Шевченко © (2009-02-20 16:56) [24]sniknik © (20.02.09 16:32) [21]
Зато больше на 4 строчки кода. Проверки выполняются мгновенно, а код читать труднее. Несогласная я.
← →
MsGuns © (2009-02-21 18:35) [25]Чтобы не тормозило, нужно блокировать все события датасета, а также его коллекции филдов, что иногда бывает затруднительно. ИМХО, проще создать клон датасета и по нему "бегать", не "напрягая" отображаемые контролы.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.04.12;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.006 c