Прошу помощи...ибо я нуль полный в программировании...но что-то слепить сумел...
Задача моя заключается в том,чтобы создать базу данных(фильмотека)...Я в аксессе сделал 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; // И снова включает фильтрацию
}
<имя поля> |параметр (=,>,<,>=,<= и т.д.)| <значение>
Вот пример:
ФИО = Иванов Иван Петрович
В результате в таблице останутся только записи где, поле ФИО имеет значение "Иванов Иван Петрович" без внесения физических изменений в таблицу.