Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 7

Поиск в базе данных одновременно по нескольким названиям (Например HTC и Apple)

15.05.2012, 19:32. Показов 1281. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Пишу курсовую работу на C++ Builder, я смог релизовать поиск в базе данных по одному названию, а мне надо чтобы можно было по нескольким сразу, ну для начала можно два параматра, потом я сам разберусь уже

Чтобы было понятно привожу пример: Например, я ввожу сначало Apple, потом HTC и одновременно в поиске будут отображаться две компании и Apple и HTC.

Вот код кнопки которая находит только по одному названию :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//---------------------------------------------------------------------------
void __fastcall TForm1::FindFamExecute(TObject *Sender)
//поиск по наименованию
{
AnsiString s;
TelBook tb;
  s = InputBox("Ввод", "Введите наименование изделия", "");
  tb = TelBook();
  s=tb.FilterFIO(s);
  DataSource1->DataSet = NULL;
  DataSource1->DataSet = ADOQuery1;
  ADOQuery1->Close();
  ADOQuery1->SQL->Clear();
  ADOQuery1->SQL->Add("SELECT *");
  ADOQuery1->SQL->Add("FROM data");
  ADOQuery1->SQL->Add("WHERE " + s);
  ADOQuery1->SQL->Add("ORDER BY " + ADOTable1->IndexFieldNames);
  ADOQuery1->Open();
}
//---------------------------------------------------------------------------
В приципе как я думаю, чтобы искал сразу по двум параметрам, нужно изменить до вида такого:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//---------------------------------------------------------------------------
void __fastcall TForm1::FindFamExecute(TObject *Sender)
//поиск по наименованию
{
AnsiString s, s1;
TelBook tb;
  s = InputBox("Ввод", "Введите наименование изделия", "");
  tb = TelBook();
  s=tb.FilterFIO(s, s1);
  s1 = InputBox("Ввод", "Введите наименование изделия", "");
  tb = TelBook();
  s1=tb.FilterFIO(s, s1);
  DataSource1->DataSet = NULL;
  DataSource1->DataSet = ADOQuery1;
  ADOQuery1->Close();
  ADOQuery1->SQL->Clear();
  ADOQuery1->SQL->Add("SELECT *");
  ADOQuery1->SQL->Add("FROM data");
  ADOQuery1->SQL->Add("WHERE " + s + s1);
  ADOQuery1->SQL->Add("ORDER BY " + ADOTable1->IndexFieldNames);
  ADOQuery1->Open();
}
//---------------------------------------------------------------------------
Но так если напишу, то выдает ошибку, название которой Вы можете посмотреть во вложении.

Повторюсь еще раз, поиск по одному названию работает на ура. Большое спасибо.
Миниатюры
Поиск в базе данных одновременно по нескольким названиям (Например HTC и Apple)  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.05.2012, 19:32
Ответы с готовыми решениями:

Поиск в базе данных по нескольким полям
Добрый день, столкнулся с такой проблемой, нашел код поиска по базе данных Ассеss в билдере. Но он работает только для одного поля, мне...

Поиск по нескольким полям в Базе Данных
Здаствуйте, хотел бы попросить выложить пример, с поиском по нескольким атрибутам в Базе Данных. Желательно что-бы там был осуществлён...

Поиск в базе данных по нескольким параметрам
Здравствуйте, подскажите кто-нибудь, как сделать следующее: В попупе находятся критерии для поиска квартир, например "цена",...

11
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 7
16.05.2012, 22:24  [ТС]
А вот еще вопрос, у меня есть код кнопки, который удаляет один элемент, как его переписать, чтобы он удалял все элементы в папке. Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//---------------------------------------------------------------------------
void __fastcall TProfileForm::Button1Click(TObject *Sender)
{
  remove(("profiles/" + ProfileListBox->Items->operator [](ProfileListBox->ItemIndex) + ".prof").c_str());
    ProfileListBox->Items->Delete(ProfileListBox->ItemIndex);
    QtyPnl->Caption = "";
    BestPnl->Caption = "";
    MiddlePnl->Caption = "";
    if ( !ProfileListBox->Count )
    {
        DelBt->Enabled = false;
        SelectBt->Enabled = false;
    }
    else
    {
        ProfileListBox->ItemIndex = 0;
    }
 
}
//---------------------------------------------------------------------------
Спасибо. Желательно до завтра помогите и с первым и со вторым вопросом, скоро сдавать, надо бы до ума довести.
0
wtf!?
 Аватар для Flyer
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
16.05.2012, 22:42
В запрос (В Where) нужно добавить
SQL
1
Company IN ("Apple", "HTC")
0
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 7
16.05.2012, 23:06  [ТС]
Цитата Сообщение от Flyer Посмотреть сообщение
В запрос (В Where) нужно добавить
SQL
1
Company IN ("Apple", "HTC")
Не понял? Можешь поподробнее. Большое спасибо.
0
wtf!?
 Аватар для Flyer
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
16.05.2012, 23:15
C++
1
2
3
4
5
  ADOQuery1->SQL->Add("SELECT *");
  ADOQuery1->SQL->Add("FROM data");
  ADOQuery1->SQL->Add("WHERE " + s + s1);
  ADOQuery1->SQL->Add("AND Company IN (\"Apple\", \"HTC\")");
  ADOQuery1->SQL->Add("ORDER BY " + ADOTable1->IndexFieldNames);
примерно
0
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 7
16.05.2012, 23:58  [ТС]
Цитата Сообщение от Flyer Посмотреть сообщение
C++
1
2
3
4
5
  ADOQuery1->SQL->Add("SELECT *");
  ADOQuery1->SQL->Add("FROM data");
  ADOQuery1->SQL->Add("WHERE " + s + s1);
  ADOQuery1->SQL->Add("AND Company IN (\"Apple\", \"HTC\")");
  ADOQuery1->SQL->Add("ORDER BY " + ADOTable1->IndexFieldNames);
примерно
Нет, к сожалению и так не работает, выдает ту же самую ошибку
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
17.05.2012, 00:00
C++
1
ADOQuery1->SQL->Add("AND Company IN ('Apple', 'HTC')");
0
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 7
17.05.2012, 00:15  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
C++
1
ADOQuery1->SQL->Add("AND Company IN ('Apple', 'HTC')");
Тоже не работает та же ошибка Вместо "Company" у меня FAM, так для информации
0
wtf!?
 Аватар для Flyer
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
17.05.2012, 00:23
А, мой провтык
C++
1
2
3
4
 ADOQuery1->SQL->Add("SELECT *");
  ADOQuery1->SQL->Add("FROM data");
  ADOQuery1->SQL->Add("WHERE Company IN (\"Apple\", \"HTC\")") //вместо эпл и хтс твои переменные;
  ADOQuery1->SQL->Add("ORDER BY " + ADOTable1->IndexFieldNames);
Ошибка была из-за "WHERE " + s + s1, потому что в Where условия идут через AND, а не запятую
0
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 7
17.05.2012, 00:53  [ТС]
Цитата Сообщение от Flyer Посмотреть сообщение
А, мой провтык
C++
1
2
3
4
 ADOQuery1->SQL->Add("SELECT *");
  ADOQuery1->SQL->Add("FROM data");
  ADOQuery1->SQL->Add("WHERE Company IN (\"Apple\", \"HTC\")") //вместо эпл и хтс твои переменные;
  ADOQuery1->SQL->Add("ORDER BY " + ADOTable1->IndexFieldNames);
Ошибка была из-за "WHERE " + s + s1, потому что в Where условия идут через AND, а не запятую
Теперь по поводу операторов не ругается, но выдает ошибку такую "[C++ Error] main.cpp(98): E2379 Statement missing ;" на строке "ADOQuery1->SQL->Add("ORDER BY " + ADOTable1->IndexFieldNames);" курсор мыши находится после "ADOQuery1"

Добавлено через 10 минут
Цитата Сообщение от AleshaShaman Посмотреть сообщение
Теперь по поводу операторов не ругается, но выдает ошибку такую "[C++ Error] main.cpp(98): E2379 Statement missing ;" на строке "ADOQuery1->SQL->Add("ORDER BY " + ADOTable1->IndexFieldNames);" курсор мыши находится после "ADOQuery1"
Извините за глупое предыдущее сообщение, забы поставить ";" теперь поставил, та же ошибка по поводу операторов

Добавлено через 7 минут
Цитата Сообщение от Flyer Посмотреть сообщение
Ошибка была из-за "WHERE " + s + s1, потому что в Where условия идут через AND, а не запятую
у меня во временных переменных s и s1 хранятся те данные которые задаю с клавиатуры, даже если это отбросить, то вариант "ADOQuery1->SQL->Add("WHERE Company IN (\"Apple\", \"HTC\")")" все равно не работает
0
wtf!?
 Аватар для Flyer
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
17.05.2012, 01:16
Мдо, когда комент писал, не увидел что поставил курсор перед ;

Цитата Сообщение от AleshaShaman Посмотреть сообщение
все равно не работает
че говорит, на что жалуется?

Насчет WHERE " + s + s1 я имел ввиду, что синтаксис не правильный для Where, а не что у тебя что то неправильно с переменными
0
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 7
17.05.2012, 11:56  [ТС]
В том-то и дело, что ни чего не пишет, когда ввожу поиск, просто ни чего не находит, ни Apple ни HTC, может ошибка в операторе? Вот код:

C++
1
2
3
4
AnsiString TelBook::FilterFIO(AnsiString s, AnsiString s1)
{
return "fam Like " + QuotedStr(s + s1 + "%");
}
Добавлено через 4 минуты
В том-то и дело, что ни чего не пишит, просто когда ищешь, то ни чего не находит, ни Apple, ни HTC,

может в операторе проблема, вот код:

C++
1
2
3
4
AnsiString TelBook::FilterFIO(AnsiString s, AnsiString s1)
{
return "fam Like " + QuotedStr(s + s1 + "%");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.05.2012, 11:56
Помогаю со студенческими работами здесь

Поиск по нескольким сайтам одновременно
Добрый день! Передо мной поставлена такая задача: Нужно осуществлять поиск запчастей по нескольким сайтам ( 15 сайтов, не больше) и...

Поиск в таблице по нескольким полям одновременно
Уважаемые гуру делфи! Помогите с поиском в таблице по нескольким полям одновременно. Если у кого-то есть желание помочь, ответьте, обрисую...

Фильтрация по нескольким названиям полей
как организовать фильтрацию по нескольким названиям полей через адотабле void __fastcall TForm1::Button6Click(TObject *Sender) { ...

Как выполнить поиск одновременно по нескольким значениям документа
в общем задача такая: имеется база. в ней есть документы которые заносятся строго по определенному шаблону. необходимо найти нужную...

Объектно-ориентированный аналог телефонного справочника: поиск по нескольким параметрам одновременно
Здравствуйте! Помогите, пожалуйста, с задачей! Создать объектно-ориентированный аналог телефонного справочника. Сформировать классы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru