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

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

Фильтрация в Query чтото не так гдето зверь зарылся [D7, Paradox]


Sliften ©   (2003-06-09 22:54:00) 

Есть таблица (60000тыс,зап,)также в ней имеется 2 колонки ID_POST(код поставщика,integer) и SINONEM (синоним названия товара.integer)
причем в поле ID_POST разброс данных от 1 до 15 а в поле SINONEM от 1 до 20000
так вот делаем к табл, живой запрос и выводим в DBGrid далее редактируем некое поле ZAKAZ, начинаем фильтровать и тут начинается ерунда, если фильтруем по ID_POST все OK, а если по SINONEM то на целую минуту причем время зависит от кол-ва отредактируемых записей (ZAKAZ)

SQL менят нельзя (потому что AppliUpdates делаем потом в самом канце)
код фильтра прост
по SINONEM
DM.F_PrisesQuery.Filtered:=true;
DM.F_PrisesQuery.Filter:= "SINONEM = " + DM.BySINONEMQuery.FieldByName("SINONEM").AsString;

по ID_POST
DM.F_PrisesQuery.Filtered:=true;
DM.F_PrisesQuery.Filter:= "ID_Post = " + DM.ByPostQuery.FieldByName("ID_POST").AsString;

помогите разобраться в чем разница то ведь как я понел фильтр так и так проходит весь набор данных


Johnmen   (2003-06-10 11:02:00) [1]

>а почему тогда все нормально фильтровалось

Ну почему же не фильтроваться нормально ? :)


Sliften   (2003-06-10 10:47:00) [2]


>
> Johnmen © (10.06.03 09:37)
> Тормозили вызовы и работа процедур, обслуживающих функционирование
> кеширования...

а почему тогда все нормально фильтровалось (до исправления) по полю ID_POST вот в чем загадка, для меня
Да и еще фильтрация проходила уже после сбора набора данных


Johnmen   (2003-06-10 09:37:00) [3]

Тормозили вызовы и работа процедур, обслуживающих функционирование кеширования...


Sliften   (2003-06-10 08:56:00) [4]

Нет зверь кажется нашолся
Может кто сможет обьяснить на будующие? После отключения (DM.F_PrisesQuery.CachedUpdates:=true;) все проходит на ура по всем полям, кроме торо рание у меня велся поиск записей
varID_PRISES:=DM.ZakazOutQuery.FieldByName("ID_F_PRISES").AsInteger;
varZAKAZ:=DM.ZakazOutQuery.FieldByName("ZAKAZ").AsString;

if DM.F_PrisesQuery.Locate("ID_F_PRISES",varID_PRISES,[])then
begin
DM.F_PrisesQuery.Edit;
DM.F_PrisesQueryID_PODR_KLIENT.AsString:=varPODR_KLIENT;
DM.F_PrisesQueryZAKAZ.Text:=varZAKAZ;
DM.F_PrisesQuery.Post;)
end;
он тоже проходил около 1мин, (вставлялость около 200), а сейчас же 1сек,
обьясните почему процедура CachedUpdates так все тармозила когда была включена (по умолчанию)


Rol   (2003-06-10 06:13:00) [5]

Прилепить индекс. С точки зрения простой логики: Зачем активировать фильтр и только потом его задавать?


Наверх

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