Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.11.2011, 14:33
Dustinsk82la Dustinsk82la вне форума
Прохожий
 
Регистрация: 24.11.2011
Сообщения: 4
Репутация: 10
Радость Фильтрация в БД по возрасту

Здравствуйте!
Есть БД Paradox, которую показывает DBgrid. Хочу осуществить фильтрацию по полю "Data_rojdenia" в формате "17.04.1992", которая к примеру по выбору RadioButton выводила в DbGrid только тех людей возраст которых Больше 18 лет или менее 18 лет. Какие компоненты использовать? Какой обработчик для них нужен? Нужно ли изменить БД? Какой должен быть тип поля и должно ли они оно быть вычисляемым?
По возможности пожалуйста поподробнее=)Я в этом новичок!
За ранее большое спасибо!
Изображения
Тип файла: jpg delphi.JPG (93.2 Кбайт, 15 просмотров)

Последний раз редактировалось Dustinsk82la, 24.11.2011 в 15:04.
Ответить с цитированием
  #2  
Старый 24.11.2011, 15:24
Last Living Man Last Living Man вне форума
Прохожий
 
Регистрация: 10.11.2011
Сообщения: 25
Репутация: 513
По умолчанию

Цитата:
Сообщение от Dustinsk82la
Здравствуйте!
Есть БД Paradox, которую показывает DBgrid. Хочу осуществить фильтрацию по полю "Data_rojdenia" в формате "17.04.1992", которая к примеру по выбору RadioButton выводила в DbGrid только тех людей возраст которых Больше 18 лет или менее 18 лет. Какие компоненты использовать? Какой обработчик для них нужен? Нужно ли изменить БД? Какой должен быть тип поля и должно ли они оно быть вычисляемым?
По возможности пожалуйста поподробнее=)Я в этом новичок!
За ранее большое спасибо!

Тебе необходимо создать индех в Database desktop у таблицы, в который будет входить твое поле с датой (Нужно нажать restructure, потом в комбобоксе выбрать Secondary Indexes, Define). А потом использовать свойства indexfieldnames или indexname каомпонента TTable для сортировки, либо свойство Filter и Filtered для фильтрации...
Ответить с цитированием
  #3  
Старый 24.11.2011, 15:57
Dustinsk82la Dustinsk82la вне форума
Прохожий
 
Регистрация: 24.11.2011
Сообщения: 4
Репутация: 10
Радость

С индексом разобрался. Теперь поле Data_rojdenia индексировано.
Если в свойство "Filter" компонента Table1 написать "Data_rojdenia>12.31.1993" , то выдает Ошибку - Invalid Filter Expression Character'.'
Как быть дальше? Нужно чтобы фильрация происходила по щелчку по кнопке или через radiobutton, checkbox. Подскажите пожалуйсто!=)
Ответить с цитированием
  #4  
Старый 24.11.2011, 16:25
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Если тип поля Data_rojdenia задан как Date то фильтр надо формировать так:
Код:
Filter := 'Data_rojdenia > ' + StrToDate('12.31.1993');
Если-же тип поля Data_rojdenia задан как Text/String то фильтр надо формировать так:
Код:
Filter := 'Data_rojdenia > '+QuotedStr('12.31.1993');
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 24.11.2011, 17:11
Dustinsk82la Dustinsk82la вне форума
Прохожий
 
Регистрация: 24.11.2011
Сообщения: 4
Репутация: 10
Радость

Спасибо за код!
Но, если его вписать в свойство Filter объекта Table, то выдает ошибку "Table1: Field 'Filter' not found"
Если вписать код для Button, то он тоже не работает.(Скриншот прилагается)
Совсем не давно начал осваивать Delphi и много еще не понимаю)
Изображения
Тип файла: jpg ошибка_filter.JPG (25.1 Кбайт, 10 просмотров)
Ответить с цитированием
  #6  
Старый 24.11.2011, 17:24
Last Living Man Last Living Man вне форума
Прохожий
 
Регистрация: 10.11.2011
Сообщения: 25
Репутация: 513
По умолчанию

Убери StrToDate, положи на форму TDateTimePicker

Код:
Filter := 'Data_rojdenia > ' + DateToStr(DateTimePicker1.Date);
Ответить с цитированием
  #7  
Старый 24.11.2011, 18:10
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Конечно ругается, ведь вы не указали какому объекту этот фильтр пришпандорить. Так попробуйте:
Код:
Table1.Filter := 'Data_rojdenia > ' + StrToDate('12.31.1993');
И кстати, мало его сформировать. Его еще надо активировать:
Код:
Table1.Filtered := True;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #8  
Старый 24.11.2011, 18:32
Dustinsk82la Dustinsk82la вне форума
Прохожий
 
Регистрация: 24.11.2011
Сообщения: 4
Репутация: 10
Вопрос

Поместил компонент TDateTimePicker. Теперь показывает сегодняшнюю дату и календарь)
Если вписать этот код "Filter := 'Data_rojdenia > ' + DateToStr(DateTimePicker1.Date);]"
в свойство Table, то ошибка причем все таже. "Table1: Field 'Filter' not found" или "Table1: Field 'Table1Filter' not found"
Хочется все-таки реализовать данную функцию=)
Как я уже говорил желатульно по щелку мыши на компоненте CheckBox или RadioButton. С вариантами: 1)Фильтровать до 18 лет 2)Фильтровать после 18 лет 3)Не фильтровать
Спасибо!

Последний раз редактировалось Dustinsk82la, 24.11.2011 в 18:39.
Ответить с цитированием
  #9  
Старый 24.11.2011, 19:16
Last Living Man Last Living Man вне форума
Прохожий
 
Регистрация: 10.11.2011
Сообщения: 25
Репутация: 513
По умолчанию

Пришли мне проект на емайл, и твой е-мэйл я тебе сделаю...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:22.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter