Форум: "Базы";
Текущий архив: 2003.07.17;
Скачать: [xml.tar.bz2];
ВнизНемогу установить фильтр на датасет Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c