Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];

Вниз

Как отфильтровать компонент ADOTable по заданному фильтру.   Найти похожие ветки 

 
jeka_t   (2004-02-04 18:30) [0]

Помогите кто знает.
У этого компонента нет свойства FilterOptions.
Что можно придумать я не знаю.


 
Johnmen   (2004-02-04 18:40) [1]

Зато есть OnFilterRecord :)


 
jeka_t   (2004-02-05 11:42) [2]

В обработчике событий OnFilterRecord переменной Accept присвоить условия фильтра? А как же опции?


 
Johnmen   (2004-02-05 11:58) [3]

А пример в хелпе не помогает ?
:)


 
jeka_t   (2004-02-05 12:09) [4]

Там только условие переменной, но нет опций
Мне нужно не учитывать Регистр букв и установить маску по значению, например
Filter:="Mark="Вас*""
При FilterOptions:=[foCaseInsensitive]
Для этого необходимо свою функцию проверки регистра писать?


 
Anatoly Podgoretsky   (2004-02-05 12:15) [5]

И ты утверждаешь, что у ADOTable нет FilterOptions. Согласно справки есть.


 
Johnmen   (2004-02-05 12:16) [6]

Есть замечательные функции, Copy, UpperCase, AnsiUpperCase и т.д. и т.п.
:)


 
jeka_t   (2004-02-05 13:42) [7]


> Anatoly Podgoretsky


> И ты утверждаешь, что у ADOTable нет FilterOptions. Согласно
> справки есть.

Если ты не веришь, то проверь, а потом можешь утверждать и доказывать.


> Johnmen

Спасибо, я понял.


 
sniknik   (2004-02-05 13:50) [8]

> Если ты не веришь, то проверь, а потом можешь утверждать и доказывать.
лутше ты еще раз посмотри.
если свойство не вынесено в published это не значит что его совсем нет.


 
jeka_t   (2004-02-05 14:28) [9]


> sniknik

Вот спасибо. Это то что мне нужно было...
Я только не могу понять, почему в книгах этот момент не описываеться (в "помощи" тоже не нашёл), а если я не прав то пришу хоть название книги, где это есть.

> Anatoly Podgoretsky

Приношу свои извинения. Я HELP читал, но не отыскал...


 
jeka_t   (2004-02-05 14:37) [10]

Токмо не понятно как же туда его то засунуть?


 
app   (2004-02-05 14:39) [11]

jeka_t (05.02.04 14:37) [10]
С помощью операции присвоения, учимся работать без мышки.


 
jeka_t   (2004-02-05 14:50) [12]

type
TADOTable = class(TForm)
published
property FilterOptions;
end;


Похоже? или я не правильно?


 
sniknik   (2004-02-05 15:13) [13]

неправильно
это если свой компонент делать тогда так вынести можно только наследуясь от TADOTable а не фориы, а пока делай так
begin
ADOTable1.FilterOptions:= [foCaseInsensitive];
....

кстати если даже свойство есть то оно не обязательно поддерживается. %о)
похоже придется тебе все же через OnFilterRecord делать, или задавать фильтр по другому
вот так будет CaseInsensitive
Filter:= "Mark LIKE ""ВАС%""";


 
jeka_t   (2004-02-05 15:34) [14]


> sniknik

Оператор Like здесь не существует...


 
sniknik   (2004-02-05 15:58) [15]

> Оператор Like здесь не существует...
серьезно?
для ADO - Access - jet - ADODataSet.Filter это замечательно работает.
для используемого тобой провайдера возможно и нет. (н оно все одно есть ;о))


 
jeka_t   (2004-02-05 16:47) [16]

Как же можна проверить существование в Строке S подстроку PS?


 
jeka_t   (2004-02-05 16:51) [17]


> sniknik

Кто-то говорил что свойство FilterOptions существует.
Но тут вдруг стало неподдерживатся.
Отчего я могу верить что Like тоже существует для Jet 4.0?


 
sniknik   (2004-02-05 17:22) [18]

> Кто-то говорил что свойство FilterOptions существует.
и это легко проверить, исходники компонент и хелп в дельфи у меня такие же как у тебя.

> Но тут вдруг стало неподдерживатся.
может быть, но не обязательно неподдерживается, это так к сведению. (причем не вдруг стало а было и есть как было, надо проверять. а кому оно надо?)

> Отчего я могу верить что Like тоже существует для Jet 4.0?
а верить то зачем? порверка пару минут займет.


 
jeka_t   (2004-02-05 17:30) [19]

Вот я проверил и нифига не пашет это Like.
Короче, матом кроет меня за это.


 
Anatoly Podgoretsky   (2004-02-05 17:44) [20]

jeka_t (05.02.04 16:51) [17]
Кто кричал, что не существует? И кто говорил, что работает, существует, но не обящано работать, от много зависит

jeka_t (05.02.04 17:30) [19]
Как?
Именно так - я тебя крою?


 
jeka_t   (2004-02-05 17:46) [21]


> Johnmen

Спасибо. Только Ваша идея воплотила мои мечты по фильтровке
Токмо я не использовал Copy, но добавил POS.
Ещё раз всем спасибо за участие и помощь в данном вопросе.


 
sniknik   (2004-02-05 17:49) [22]

ADODataSet1.Filter:= "st1 Like ""RP%""";
ADODataSet1.Filtered:= true;

st1 в таблице текстовое поле
2 записи в рекордсете price и summ
выполняю по кнопке вышеописанный код, остается одна запись с price, вывод работает. (по крайней мере с используемым мной и уже описанным еще выше провайдером)

а вот по этому
> Вот я проверил и нифига не пашет это Like.
никаких выводов сделать нельзя.


 
sniknik   (2004-02-05 17:51) [23]

> Спасибо. Только Ваша идея воплотила мои мечты по фильтровке
> Токмо я не использовал Copy, но добавил POS.
ну хоть чтото удалось.
зря POS используеш, медленнее.


 
jeka_t   (2004-02-05 17:56) [24]


> sniknik

Чем что?


 
sniknik   (2004-02-05 18:57) [25]

чем что угодно, POS это полный скан строки на несовпадении.

вообщето трудно судить, кода ты не показываеш, а значит и в ответ получаеш общие фразы. а тут пытаеш конкретику вызнать, могу только на предположениях.
допустим у тебя такой код, допушение построено на (используеш Pos, начало строки как выше > [4], желание CaseInsensitive), можно предположить такое


procedure TForm1.ADODataSet1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
Accept:= Pos("ВАС", UpperCase(DataSet.Fields[0].AsString)) = 1;
end;

похоже?
(можно предположить еще хуже но не буду ;о))

и этот код гораздо более медленный чем с copy от которого ты отказался [21] аналогичного этому

procedure TForm1.ADODataSet1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
Accept:= UpperCase(Copy(DataSet.Fields[0].AsString, 1, Length("ВАС"))) = "ВАС";
end;


 
jeka_t   (2004-02-06 11:42) [26]


> sniknik

Я понял идею, только не могу понять, почему второй способ быстрее? (он же тоже должен проверять всю строчку на совпадении)
Если не трудно то прошу тебя разъяснить мне, как начинающему.
Заранее тебе благодарен.


 
jeka_t   (2004-02-06 14:56) [27]

Теперь и догнал почему выгоден второй код.
Проверка строки только по длине подстроки а не всей строки как в POS.
Ещё раз спосибо за предложение. и за разяснение...



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.007 c
3-5982
Zilog
2004-01-25 02:05
2004.03.03
SQL. Переносимость....


14-6190
Andreas
2004-02-11 18:29
2004.03.03
Пропали подключения ?


14-6253
Saturn
2004-02-10 15:31
2004.03.03
Субтитры к фильмам.


9-5932
Zorik
2003-08-19 14:55
2004.03.03
Алгоритм числа


14-6247
Verg
2004-02-10 11:29
2004.03.03
А что у нас с www.borland.com ?





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