Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.17;
Скачать: 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 вся ветка

Текущий архив: 2003.07.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
1-55632
K_O_T
2003-07-03 15:17
2003.07.17
COM итерфейс IStorage. Общение с TTreeView.


6-55701
dtm
2003-05-13 18:34
2003.07.17
Соединение с IBase через Интернет


14-55834
PlaTinum
2003-07-01 20:16
2003.07.17
Raport


4-55899
ai
2003-05-16 11:38
2003.07.17
Обработка сообщений от другого приложения


1-55498
Alexey
2003-07-04 09:46
2003.07.17
Отключение звукового сигнала при Showmessage