![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Фильтрация в 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]Прилепить индекс. С точки зрения простой логики: Зачем активировать фильтр и только потом его задавать?