Форум: "Базы";
Текущий архив: 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.008 c