Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Фильтр данных


Автор: Magnetto 28.2.2009, 00:05
доброй ночи...помогите разобраться с фильтрацией данных в элементарной базе на Paradox

допустим есть таблица с 4ех елементов : Имя , фамилия , дата рождения , количество фантиков

поля допустим будут названы Name , Surname , Date , Num

есть 4ре строки на каждую колонку и кнопка поиск

с одноколоночным точным поиском по тексту разобрался:
Код

datamodule1.Table1.Filter := 'Name = '''+edit1.Text+''''; //точный поиск по колонке Name

так же нарыл в гугле возможность частичного поиска , т.е "123*" = "123456789...."
Код

datamodule1.Table1.Filter := 'Name = '''+edit1.Text+'*'''; //частичный поиск в правую сторону

по сортировке чисел в учебнике нашел пример , но он не работает
если допустим в колонке фантиков есть числа от 1 до 50 , а нам нужно отфильтровать от 5 до 20
Код

Datamodule1.Table1.SetRangeStart;
Datamodule1.Table1.FieldByName('Num').AsInteger := 5;
Datamodule1.Table1.SetRangeEnd;
datamodule1.Table1.FieldByName('Num').AsInteger := 20;
Datamodule1.Table1.ApplyRange;

но у меня таблица пустая становится , т.е ничего не находит =\

вопрос 1 - а каким образом можно задать функцию фильтра в обе стороны?....т.е "*23*" = "acb23asde"
вопрос 2 - как фильтровать таблицу по полю Date?
вопрос 3 - как фильтровать по нескольким колонкам, если заранее неизвестно , которые из этих 4ех выберет пользователь для поиска?(допустим по имени и количеству фантиков , или по фамилии и дате рождения)?


заранее благодарен за ответы...
уже сломал моск в поисках , нигде толком это не описано =\

Автор: Akella 28.2.2009, 10:44
Цитата(Magnetto @  28.2.2009,  00:05 Найти цитируемый пост)
вопрос 3 - как фильтровать по нескольким колонкам,

а про or/and забыл?


Цитата(Magnetto @  28.2.2009,  00:05 Найти цитируемый пост)
заранее неизвестно , которые из этих 4ех выберет пользователь для поиска

да, заранее не известно, но когда пользователь выбрал - ты же об этом знаешь?
вот и строй фильтр, в чем проблема-то?


Цитата(Magnetto @  28.2.2009,  00:05 Найти цитируемый пост)
нигде толком это не описано =\

ты же сам привел примеры, а говоришь не описано

примерно так
'Name = '''+edit1.Text+'''  or sername = '''+edit2.Text+''''; 

и ещё почитай про OnFilterRecord, мало того я давал примеры на тему: сложная фильтрация smile , посмотри вниз страницы

мало того, ты когда создавал тему, ПОЧЕМУ НЕ ОБРАТИЛ ВНИМАНИЕ НА ТЕМЫ, КОТОРЫЕ ТЕБЕ ФОРУМ ПОКАЗАЛ, ОТВЕТЬ!!!

Автор: Magnetto 28.2.2009, 11:36
Цитата(Akella @  28.2.2009,  10:44 Найти цитируемый пост)
а про or/and забыл?

уже при 4ех столбцах будет 2^4 вариантов с and и еще столько же с or , а если их вместе еще взять....
пример: пользователь выбрал имя или фамилию и возраст...имя и фамилию или возраст...

суть вопроса была в том , что нельзя ли по ходу проверок добавлять в фильтр новые значения?(проверили чекбокс имени - : ага , пользователь выбрал его - отфильтровали по имени....дальше пользователь выбрал еще и фамилию - ага , дофильтруем наш результат еще и по фамилии)


Цитата(Akella @  28.2.2009,  10:44 Найти цитируемый пост)
мало того, ты когда создавал тему, ПОЧЕМУ НЕ ОБРАТИЛ ВНИМАНИЕ НА ТЕМЫ, КОТОРЫЕ ТЕБЕ ФОРУМ ПОКАЗАЛ, ОТВЕТЬ!!! 

бегло читал , относительно своего случая ничего не увидел , да и поздно уже было =\

Автор: Akella 28.2.2009, 11:56
Цитата(Magnetto @  28.2.2009,  11:36 Найти цитируемый пост)
бегло читал , относительно своего случая ничего не увидел , да и поздно уже было =\ 

так никогда не поздно посмотреть smile  вниз странички smile

Добавлено через 2 минуты и 58 секунд
Цитата(Magnetto @  28.2.2009,  11:36 Найти цитируемый пост)
: ага , пользователь выбрал его - отфильтровали по имени....дальше пользователь выбрал еще и фамилию - ага , дофильтруем наш результат еще и по фамилии)

я ж тебе про темы внизу странички который раз пишу

Автор: Magnetto 28.2.2009, 12:49
продолжение
http://forum.vingrad.ru/topic-31536.html#st_30_view_0

Автор: vovk 28.2.2009, 18:49
Ещё добавлю или нет.. но всёже 
если так уж хочется использовать TTable то к его filter можно добавлять, что угодно главное чтоб это "что угодно" было логично, то есть
допустим фильтр = name='сергей' or name='пётр'  
если вдруг надо добавить чтото ещё надо это делать соответственно условию ... в идеале добавлять условия к существуещему фильтру. На практике лучше переписывать фильтр заново, то есть условия гдето сохранять. Тогда or and like плюс () станут незаменимыми помошниками. Но если говорить серьёзно то лучше сразу забыть о Ttable переходить на Tquery (это касательно не только парадокса и BDE) и изучать SQL
 Могу написать прнимеры фильрации на твои задачи... но всёже поверь фильтр нужен как вспомогательное средство.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)