Главная страница
    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.46 MB
Время: 0.008 c
3-55464
RH
2003-06-25 13:02
2003.07.17
Работа с dbf-ками


14-55813
Мазут Береговой
2003-07-01 03:54
2003.07.17
Кажется у меня атипичная пневмония (SARS).


1-55634
Gabon
2003-07-03 23:52
2003.07.17
Как отловить нажатие определенной клавиши...


6-55692
exo
2003-05-13 13:37
2003.07.17
как отключить юзера,подключившегося к моему компу?


1-55557
Navi
2003-07-06 22:52
2003.07.17
Вставка текста в ячейку TStringGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский