Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2013, 00:10   #1
mylto
Новичок
Джуниор
 
Регистрация: 16.11.2013
Сообщений: 1
По умолчанию Фильтрация в БД (С++)

Доброго времени суток всем!
Прошу помощи...ибо я нуль полный в программировании...но что-то слепить сумел...

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

<имя поля> |параметр (=,>,<,>=,<= и т.д.)| <значение>
Вот пример:

ФИО = Иванов Иван Петрович
В результате в таблице останутся только записи где, поле ФИО имеет значение "Иванов Иван Петрович" без внесения физических изменений в таблицу.

Последний раз редактировалось Stilet; 16.11.2013 в 14:36.
mylto вне форума Ответить с цитированием
Старый 16.11.2013, 00:51   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

Цитата:
Form1->ADOTable1->Filter= " <= " + QuotedStr(Edit5->Text);
своими словами расскажите чего тут написали
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтрация sid1868 Помощь студентам 2 14.06.2011 11:43
Фильтрация Bek-Z БД в Delphi 1 04.05.2011 23:03
Фильтрация в D7 rombler69 БД в Delphi 4 30.10.2009 11:40
Фильтрация Felonalex БД в Delphi 4 24.10.2008 20:09
Фильтрация Gorychev БД в Delphi 20 10.06.2008 23:30