Страница 1 из 1

Вылетает ошибка Out of memory при переборе выбранных записей

Добавлено: 22 дек 2005, 07:37
DelphiN!

Код: Выделить всё

 DATA.State.SelectSQL.Text := 'SELECT * FROM STATE where City_ = 'Almaty' and TIME_ >= '''+DateToStr(edtDateS.Date)+' '+edtTimeS.Text+''' and TIME_ <= '''+DateToStr(edtDatePo.Date)+' '+edtTimePo.Time+'''';
 DATA.State.Open;
 DATA.State.First;
 while not DATA.State.Eof do
 begin
   b := false;
   for i := 0 to strl.Count-1 do
     if DATA.CmpStr(DATA.State.FieldByName('City_').AsString+':'+DATA.State.FieldByName('Organization_').AsString,strl.Strings[i ]) then
       b := true;
     if not b then
       strl.Add(DATA.State.FieldByName('City_').AsString+':'+DATA.State.FieldByName('Organization_').AsString);
   DATA.State.Next;
 end;
После очередного вызова DATA.State.Next вылетает Out of memory. Запрос выводит не более 1000000 записей. Как с этим бороться?

Добавлено: 22 дек 2005, 08:13
Dimitry Sibiryakov
Не использовать компоненты с кэшированием на клиенте.

Добавлено: 22 дек 2005, 08:22
DelphiN!
А с ibDataSet никак?
А какие компоненты не используют кеширование?

Добавлено: 22 дек 2005, 08:34
Dimitry Sibiryakov
Нууу... Можешь поставить UniDirectional := true;
Но я бы использовал TIBSQL.

Добавлено: 22 дек 2005, 08:39
DelphiN!
А что дает UniDirectional?

Добавлено: 22 дек 2005, 08:46
Dimitry Sibiryakov
F1 нажать лень?

Добавлено: 22 дек 2005, 09:39
DelphiN!
Уже нажал, спасибо :)

Добавлено: 22 дек 2005, 10:11
kdv