![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Фильтрация НД [D5, IB6.x]
Johnmen © (2002-01-31 12:24:00)Такой вот глюк при работе с IBDataSet : ставлю фильтр Filtered:=True; Filter:=<....>; и ничего не происходит ! Это я глючу или IBDataSet ? Кто сталкивался - отзовитесь !!!
Mikhail (2002-01-31 19:47:00) [21]А не можно ли по-подробнее про FIBPlus начинающему?
Где он есть? Премного влагодарен.
Fareader (2002-01-31 18:43:00) [22]Я имел ввиду скорость фильтра и локейта, а все остальное в FIBPlus на высоте. И я заметил такой глюк BDE - если обновлять большое (6000 и более записей), то где-то после 3000 записи начинают обновляться очень тупо, а если делать Commit - то вообще мрак...
Johnmen (2002-01-31 17:03:00) [23]>Fareader © : не сравнивал, но знаю, что в BDE фильтрация - самая сильная сторона.
А если со скоростями, как ты говоришь, то это удручает8o(
Fareader (2002-01-31 16:45:00) [24]Видишь ли в чем дело, я сам порбовал перейти с BDE на IBX, но скорость работы, в том числе фильтра и локейт ну никак, поэтому пришлось переходиь на FIBPlus, там побыстрее, но все равно до скорости BDE не дотягивает :(
Johnmen (2002-01-31 15:27:00) [25]>Fareader © : спасибо, что не поленился столько нашлепать, но как пользоваться OnFilterRecord я знаю :)))))
просто надо иметь в виду, что внутренний механизм фильтрации НД в случае Filter:=<...> и OnFilterRecord несколько разный,
в связи с чем OnFilterRecord намного тормознутейFilter:=<...> ;o)
но раз в TIBDataSet облом с Filter:=<...>, то придется OnFilterRecord...
Fareader (2002-01-31 14:53:00) [26]Можешь в этом событии сделать кучу возможных фильтров через кейс.
Я так сделал
case state_nak of
1:dataset.filtered:=false;
2:Accept := (DataSet["пап"]=-1) or (DataSet["ап"]=1);
3:Accept := DataSet["апа"]=2;
4:Accept := DataSet["апа"]=3;
5:Accept := DataSet["апа"]=4;
6:Accept := (DataSet["апа"]=4) or (DataSet["апа"]=5);
7:Accept := DataSet["апа"]=s_drv_query.fieldbyname("рр").asinteger;
8:Accept := DataSet["рр"]=strtoint(F_G_Form.edit1.text);
9:Accept := DataSet["апарп"]=strtoint(F_G_Form.edit2.text);
10:Accept := (DataSet["апрп"]=strtoint(F_G_Form.edit1.text)) and (DataSet["парп"]=strtoint(F_G_Form.edit2.text));
end;
сделал глобальную переменную state_nak и перед установкой фильтра ставлю ее в нужное значение
может некрасиво, но работает ;)
Johnmen (2002-01-31 14:00:00) [27]>Alexander : обязательно перейду (давно хочу) на FIBPlus,
просто сейчас совсем нет времени - добиваю проект, где используется IBX [Джефф Оверкэш >:((( ]...
еще раз попробую OnFilterRecord...еще раз спасибо.
Alexandr (2002-01-31 13:51:00) [28]так, как тебе Fareader и надо фильтрацию делать.
Если тебе конечно нужна фильтрация на клиенте, а не на сервере.
Это универсальный способ и он везде работает.
А Джефф Оверкэш это разработчик IBX - это как раз те компонеты, которыми ты пользуешься.
А вообще, мой тебе совет- используй лучше IBObjects или FIBPlus, чтобы потом не пожалеть
Johnmen (2002-01-31 13:40:00) [29]>Alexandr : я так и предполагал...спасибо
а кто это - Джефф Оверкэш ?
>Fareader : так тоже делал, но там свои проблемы...спасибо
Alexandr (2002-01-31 12:44:00) [30]свойство Filter это просто так, для совместимости (????), туда можно хоть чего писать (хоть Джефф Оверкэш дурак)
Fareader (2002-01-31 12:37:00) [31]У них фильтры ставятся в событии OnFilterRecord таким макаром:
Accept := DataSet["апап"]=2;
т.те, ставиш фильтр Filtered:=True, а в Filter ничего не пишешь