| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Базы данных > Фильтрация в БД |
| Автор: mylto 15.11.2013, 23:15 |
| Доброго времени суток всем! Прошу помощи...ибо я нуль полный в программировании...но что-то слепить сумел... Задача моя заключается в том,чтобы создать базу данных(фильмотека)...Я в аксессе сделал 3 таблицы,связи в них,всё норм...В билдере всё отображается...корректируется что надо,но есть ещё одна проблема - сделать фильтрацию... Есть столбцы(фильм,бюджет,режисёр,жанр,год),сделал комбобокс,где перечислил все эти графы,сделал Тедит для ввода параметра поиска...и кнопку но мне не фильтрует ничего( задача заключается в том,чтобы я в комбобоксе выбирал название столбца,по которому искать,а в эдит вводил ключевое слово или цифру(год,бюджет)...так вот как мне это сделать...подскажите пожалуйста void __fastcall TForm1::Button4Click(TObject *Sender) { ADOTable1->Open(); ADOTable1->Locate(ComboBox5->Text,Edit5->Text,TLocateOptions() << loCaseInsensitive); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button5Click(TObject *Sender) { Form1->ADOTable1->Filtered=false; Form1->ADOTable1->Filter= " <= " + QuotedStr(Edit5->Text); Form1->ADOTable1->Filtered=true; вот кусок кода этого делал по примеру с сайта Приведем пример использования метода Locate. Поместите на форму компонент TComboBox, TButton и TEdit, занесите в КомбоБокс названия всех полей вашей таблицы (для этого используется свойство Items). В Edit мы будем вводить значение необходимое для поиска, а из ComboBox выбирать поле, по которому осуществлять поиск. Теперь дважды щелкните по Button или выберите событие OnClick в инспекторе объектов. Впишете в него следующий код: void __fastcall TForm1::Button1Click(TObject *Sender) { ADOTable1->Locate(ComboBox1->Text,Edit1->Text,[loCaseInsensitive]); //здесь по указанному в Combo полю ищем значении из Edit. Все просто //loCaseInsensitive - это поиск без ориентации на строчные и прописные буквы } Видите, для организации простого поиска достаточного всего одной строчки кода. Настало время добавить в наш проект фильтрацию. Добавить еще один TEdit и TButton на форму. Для понимания принципа этого будет достаточно. И разберите вот этот код: void __fastcall TForm1::Button2Click(TObject *Sender) { ADOTable1->Filtered=false; // Отменяем предыдущую фильтрацию если была ADOTable1->Filter=Edit2->Text; // Выставляем критерий фильтрации ADOTable1->Filtered=true; // И снова включает фильтрацию } Объясню, что может вводиться в Edit2. Мы создали некий очень далекий аналог командной строки. Вот шаблон, по которому работает фильтрация: <имя поля> |параметр (=,>,<,>=,<= и т.д.)| <значение> Вот пример: ФИО = Иванов Иван Петрович В результате в таблице останутся только записи где, поле ФИО имеет значение "Иванов Иван Петрович" без внесения физических изменений в таблицу. |