Главная страница
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.017 c
1-55628
Makhanev A.S.
2003-07-03 21:56
2003.07.17
Частое мерцание StatusBar а


3-55420
Vladimir_Shk
2003-06-24 08:31
2003.07.17
Обработка мыши в DBGrid


3-55470
MadVolk
2003-06-25 15:18
2003.07.17
SQL: изменение структуры таблицы в хранимой процедуре


4-55884
Executor
2003-05-12 14:14
2003.07.17
Проблема с перерисовкой окна в WinXP


1-55579
Hawk2
2003-07-02 17:30
2003.07.17
Дизайн формы