Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.013 c
3-55435
OlegID
2003-06-24 12:55
2003.07.17
история значений


1-55542
killer
2003-07-05 15:29
2003.07.17
Как удалить компонент?


6-55681
Adventure
2003-05-12 10:59
2003.07.17
Загрузка файла на веб сервер.....


1-55532
Любитель
2003-07-04 17:20
2003.07.17
Бегущая строка


1-55558
Far
2003-07-06 22:07
2003.07.17
SysColors





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский