Вниз
Скачать: CL | DM;

Немогу установить фильтр на датасет   Найти похожие ветки 

← →
Alex_x ©   (2003-06-25 11:25) [0]

Датасет состоит из полей одно из них "tovarID" по которому я хочу фильтровать. согласно хелпу должно виглядеть так:

IBDataSet1.Filtered:=false;
IBDataSet1.Filter:= "tovarID = 20";
IBDataSet1.Filtered:=true;

но не работает :(


← →
Наталия ©   (2003-06-25 11:26) [1]

OnFilterRecord пробовал?


← →
Zacho ©   (2003-06-25 11:29) [2]


> Alex_x © (25.06.03 11:25)

Если имеется в виду TIBDataSet, то св-во Filter в нем не работало, не работает, и уверен, что работать никогда не будет. :-)
См. Наталия © (25.06.03 11:26)


← →
Alex_x ©   (2003-06-25 11:35) [3]

Ну а что делать?
как фильтровать датасет правильно?


← →
Zacho ©   (2003-06-25 11:38) [4]


> Alex_x © (25.06.03 11:35)

Писать обработчик OnFilterRecord.
Примерно так:
Accept:=DataSet.FieldByName("tovarID").AsInteger=20;


← →
Alex_x ©   (2003-06-25 12:14) [5]

Спасибо получилось
но есть вопрос. Я хотел фильтровать ДатаСет и потом делать цикл по "отфильтрованим" записям. Но количество записей в датасете показывае прежнее, тоесть я так понимаю фильтр используется только для отображения, а как "забрать" отфильтрование записи например в масив


← →
Соловьев ©   (2003-06-25 12:19) [6]


> забрать" отфильтрование записи например в масив

как и всегда
While not Eof do
begin
...
Next;
end;


← →
Zacho ©   (2003-06-25 12:21) [7]


> Alex_x © (25.06.03 12:14)

Не обращай внимания на RecordCount.
Просто пройдись в цикле типа
DataSet.First;
while not DataSet.Eof do
begin
....
DataSet.Next;
end;

и получишь только отфильтрованные записи.
Да, на всякий случай предупреждаю: не стоит использовать фильтр при CachedUpdates:=true - по крайней мере в моей версии IBX есть весьма неприятный баг, вылезающий при этом.


← →
Izyum ©   (2003-06-25 14:01) [8]

Воще-то, есл иречь идет об Интербейсе использовать OnFilterRecord - не совсем правильно. Этим методом фильтрация производится путем полного перебора всех записей и поиска совпадений с условием - это очень медленно и иногда криво. Для Интербейса (да и воще для SQL-серверов) оптимальным является формирования Дата-сета с помощью TIBQuery (select * from name_table where id=20)


← →
Zacho ©   (2003-06-25 14:08) [9]


> Izyum © (25.06.03 14:01)

Во многих ситуациях - очень даже правильно. Например, при построении отчетов.


← →
Johnmen ©   (2003-06-25 14:14) [10]

>Izyum © (25.06.03 14:01)

Вполне применимо. И полный перебор не делается, а только необходимого для приложения количества. Кривизны не замечено...



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.016 c
14-55728
IronWit
2003-07-02 16:54
2003.07.17
потестируйте программу плс


14-55765
Dimka Maslov
2003-07-02 14:02
2003.07.17
ALC comes back


1-55596
Zigs
2003-07-03 13:12
2003.07.17
Можно ли в QReport сделать шрифт меньше чем 8?


14-55829
Centurion
2003-07-01 15:04
2003.07.17
DevExpress for Delphi 7


1-55559
Mishenka
2003-07-06 23:52
2003.07.17
Изменение значения в SpinEdit...




   Наверх