Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > Фильтрация по нескольким полям |
Автор: Лиходей 11.10.2008, 09:01 | ||
Есть шесть полей вводда (Edit) для задания условия на фильтрацию, причем каждое из полей может быть пустым, лишь бы одно из полей было заполнено. Применяю следующую конструкцию:
которая работат корректно только если все поля заполнены, если одно из полей EDit пустое - вылетает ошибка "аргументы имеют не верный тип". Как пользоваться OnFilterRecord знаю, но в таблице 300.000 тысяч записей и Filter намного шустрее работает. |
Автор: vovk 11.10.2008, 15:14 | ||
Можно сделать набор фильтра типа
Неизящно но работать должно да и доработать можно |
Автор: Лиходей 11.10.2008, 18:13 | ||
vovk спасибо за идею. Немного переделал ваш пример. Все работает.
Формируется строка фильтра неизящно, как вы говорите, зато фильтрует быстро. Без проверки полей на наличие\отсутствие данных все равно не обойтись. Еще раз спасибо. |
Автор: MMihan 16.12.2011, 23:35 |
Тоже по благодарю за пример.. но есть пару вопросов.. что такое #39 и почему то ругается всегда на первый едит.. если стираем его второй :НЕ удается Открыть Фильтр.. не подскажите в чем причина может быть.. |
Автор: Данкинг 16.12.2011, 23:44 |
Код одинарной кавычки - ' |
Автор: MMihan 16.12.2011, 23:55 |
спасибо.. |
Автор: Данкинг 17.12.2011, 00:03 |
А что должно куда вылетать? Я в примеры-то не вникал. Да и лучше запрос с условием использовать вместо фильтра. Кстати, СУБД какая? |
Автор: MMihan 17.12.2011, 00:09 | ||||
все разобрался Null не надо... акцесс... sql запросом делал все отлично работало... но столкнулся с проблемой .. что фильтровка и сортировка... сбивают друг друга.. .. результат отображается в Dbgrid.. например хота сделать по выбору Радио буттнон сортировка по ФИО или по Серийному номеру.. и тут же делаем запрос на поиск.. то они сбивали друг друга.. Совместить такое у меня не получилось.. опыта очень мало и знаний например был такое запрос
и вот такая процедура сортировки...
|
Автор: Данкинг 17.12.2011, 00:11 |
Если их вместо использовать - то конечно. |
Автор: MMihan 17.12.2011, 00:16 | ||
а подскажите пожалуйста как в эту процедуру фильтрования вставить Сортировку
и что то не знаю как с ДАтой поступить.. |
Автор: MMihan 17.12.2011, 00:35 |
Спасибо разобрался сделал.. осталось 2 пробемы .. почему вылетает ошибка если искать по первому полю КЛ.. Ключ, счетчик и дата.. в в самом фильтре преобраловать DateToStr(DateTimePicker2.DateTime)? и DateToStr(DateTimePicker1.DateTime) или же сачало нужно в var DateToStr(DateTimePicker1.DateTime)=dt1 DateToStr(DateTimePicker2.DateTime)=dt2 |
Автор: Данкинг 17.12.2011, 00:50 |
Какая ошибка? Ну, вероятно, в самом фильтре, в строке его формирования, а где ещё. |
Автор: MMihan 17.12.2011, 00:55 |
Не удается открыть фильтр делал DateToStr(DateTimePicker2.DateTime) и DateToStr(DateTimePicker2.Date) ошибка .. не соответсвие типов.. РРРРР ох уж эта дата)) |
Автор: Данкинг 17.12.2011, 00:58 |
А, ну так если это счётчик => поле числовое. А ты его с кавычками берёшь в фильтре. |
Автор: MMihan 17.12.2011, 01:04 |
брр вроде нету лишних ' .. не пойму.. |
Автор: Данкинг 17.12.2011, 01:29 | ||
Каких таких лишних? Там кавычек вообще быть не должно равно как и LIKE, т.к. как-то так:
|
Автор: MMihan 17.12.2011, 16:42 |
а нельзя сделать на подобие Like % .. ? |
Автор: Данкинг 17.12.2011, 17:04 |
LIKE ищет вхождения текстовой строки в поле. Как ты представляешь это себе с числом? |
Автор: Akella 17.12.2011, 17:33 |
Конвертировать (представить) число в строку и потом искать нужное вхождение в строке. |
Автор: Данкинг 17.12.2011, 17:49 | ||
Это понятно, только не могу представить, что за задача такая, где для отбора подходит как 11, так и 15471. |
Автор: vovk 17.12.2011, 18:29 |
УУх круто реанимировали тему из 2008 и она актуальна)) |
Автор: Данкинг 17.12.2011, 18:32 |
Так сессия же в разгаре. ![]() |
Автор: MMihan 17.12.2011, 21:41 |
ну то представленное число совсем не так))...то что мне надо))) .. нвпример пишем число 2 ... и выводит все чо начинается на 2... все это работало же у меня SQL запросом.... PS ..Ребят да ладно вам глумится.. не все сразу с въехали как нормально программировать..я свою прогу пререписываю 3 раз.. стараюсь сделать лучше .но все равно что то да не так |
Автор: Данкинг 17.12.2011, 21:59 | ||
LIKE с числовым полем работал? ![]() А где ты глумления нашёл? Глумимся мы в "Центре помощи" обычно. ![]() Вообще как с фильтром такое сделать - х/з. Запросом ты как делал? Добавлено через 4 минуты и 40 секунд Т.е. запросом будет так:
|
Автор: MMihan 18.12.2011, 03:39 | ||
|