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

Поиск в БД через фильтры

22.03.2012, 00:36. Показов 1912. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне надо сделать поиск в БД через фильтры(создал RadioGroup с пунктами "Категория" и "Описание"), но не знаю как записать код.
По идее структура должна выглядеть так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Swith(RadioGroup1.ItemIndex)
case 0: {ADOTable1->Filtered=false;
If Length(Edit1->Text) > 0 then
ADOTable1->Filter='Категория' + ' LIKE ' + #39 + '%' + Edit1->Text + '%' + #39;
ADOTable1->Filtered=true;}
break;
case 1:{
If Length(Edit1->Text) > 0 then
ADOTable1->Filter='Описание' + ' LIKE ' + #39 + '%' + Edit1->Text + '%' + #39;
ADOTable1->Filtered=true;}
break;
default:{ShowMessage('Выберете нужный пункт');} break;
}
не мог бы кто-нибудь помочь правильно заполнить?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.03.2012, 00:36
Ответы с готовыми решениями:

DataTables - сортировка, файлы, поиск и фильтры
Добрый вечер! Есть несколько вопросов по Datatables: 1. Как убрать сортировку у первого столбца? 2. При скачивании файла .txt в нем...

Проверка данных через фильтры
Здравствуйте, уважаемые пользователи! Рассматриваю разные варианты проверки данных при регистрации. Набросал такой код: ...

Прохождение лучей через фильтры Шольца. Матрица Джонса
Добрый вечер! возникла проблема в описании прохождения лучей через фильтры Шольца.Неободимо использовать формализм Джонса....

10
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
22.03.2012, 10:11
А какой код вы не знаете как записать ?

Предварительно, всё правильно у вас написано. Только фильтр сложный получается, много вводных. Builder не любит много + + + в фильтрах в одной строке. Бывают глюки. В отладчике пройдитесь и убедитесь что в Фильтре содержится именно та строка которую вы помещаете в фильтр перед
C++
1
ADOTable1->Filtered=true;
1
0 / 0 / 0
Регистрация: 23.12.2010
Сообщений: 11
22.03.2012, 10:26  [ТС]
я думаю после case у меня есть ошибки, поэтому и спросил
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.03.2012, 10:29
Цитата Сообщение от TheAnd093 Посмотреть сообщение
Мне надо сделать поиск в БД через фильтры(создал RadioGroup с пунктами "Категория" и "Описание"), но не знаю как записать код.
По идее структура должна выглядеть так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Swith(RadioGroup1.ItemIndex)
case 0: {ADOTable1->Filtered=false;
If Length(Edit1->Text) > 0 then
ADOTable1->Filter='Категория' + ' LIKE ' + #39 + '%' + Edit1->Text + '%' + #39;
ADOTable1->Filtered=true;}
break;
case 1:{
If Length(Edit1->Text) > 0 then
ADOTable1->Filter='Описание' + ' LIKE ' + #39 + '%' + Edit1->Text + '%' + #39;
ADOTable1->Filtered=true;}
break;
default:{ShowMessage('Выберете нужный пункт');} break;
}
не мог бы кто-нибудь помочь правильно заполнить?
Тут вообще не понятно тои ты на Buildere пишешь, толи на Delphi?
0
0 / 0 / 0
Регистрация: 23.12.2010
Сообщений: 11
22.03.2012, 10:32  [ТС]
я до этого писал на Delphi, а когда писал код на C++ , я если можно так сказать, переделывал с Delphi на С++
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.03.2012, 10:45
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
ADOTable1->Filtered=false;
swith(RadioGroup1->ItemIndex)
{
  case 0:
    {
   
      if (Edit1->Text.Length()> 0) 
        {
          ADOTable1->Filter="Категория = " + QuotedStr(Edit1->Text);
        }
break;
      }
case 1:
      {
         if (Edit1->Text.Length() > 0)
           {
              ADOTable1->Filter="Описание = " + QuotedStr(Edit1->Text);
           }
         break;
     }
       default:
           {
             ShowMessage("Выберете нужный пункт");
           }
}
ADOTable1->Filtered=true;
0
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
22.03.2012, 10:45
Меня смущает вот это :
C++
1
#39 + '%' + Edit1->Text + '%' + #39;
что такое #39 ?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.03.2012, 10:57
Вот так правильней

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
ADOTable1->Filtered=false;
swith(RadioGroup1->ItemIndex)
{
  case 0:
    {
   
      if (Edit1->Text.Length()> 0) 
        {
          ADOTable1->Filter="Категория = " + QuotedStr(Edit1->Text);
          ADOTable1->Filtered=true;
        }
break;
      }
case 1:
      {
         if (Edit1->Text.Length() > 0)
           {
              ADOTable1->Filter="Описание = " + QuotedStr(Edit1->Text);
              ADOTable1->Filtered=true;
           }
         break;
     }
       default:
           {
             ShowMessage("Выберете нужный пункт");
           }
}
0
0 / 0 / 0
Регистрация: 23.12.2010
Сообщений: 11
22.03.2012, 11:00  [ТС]
приду с учёбы - попробую. Думаю будет работать(надеюсь)
0
0 / 0 / 0
Регистрация: 23.12.2010
Сообщений: 11
23.03.2012, 18:09  [ТС]
Это не работает, я тут покумекил и получилось это:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
ADOTable1->Filtered=false;
switch(RadioGroup1->ItemIndex)
 {
 case 0 :
  {
  if (Edit1->Text.Length()>0)
   {
   ADOTable1->Filtered=true;
   }
  else
  ADOTable1->Filtered=false;
  ADOTable1->Filter=" Название>='" + Edit1->Text +"'" ;
  break;
  }
  {
  case 1:
   {
   if (Edit1->Text.Length()>0)
    {
    ADOTable1->Filtered=true;
    }
   else
   ADOTable1->Filtered=false;
   ADOTable1->Filter=" Категория>='" + Edit1->Text +"'" ;
   break;
   }
  }
 default:
  {
  ShowMessage("Выберите нужный пункт");
  }
 }
}
но он не всё фильтрует, кто сможет - поправте его
0
87 / 87 / 1
Регистрация: 30.06.2011
Сообщений: 123
23.03.2012, 23:03
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
switch(RadioGroup1->ItemIndex)
{
case 0:
if (Edit1->Text !=""){
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT  *FROM  Table WHERE  Nazvanie  LIKE '"+Edit1->Text+"_%';");
  }
else
ADOQuery1->Active=false;
ADOQuery1->Active=true;
if (Edit1->Text =="")
{
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT  *FROM  Tab le ");
ADOQuery1->Active=false;
ADOQuery1->Active=true;
}
break;
case 1:
{
ADOQuery1->Active = false;
ADOQuery1->Active = true;
if (Edit1->Text !=""){
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT  *FROM Table  WHERE  Kategoruya  LIKE '"+Edit1->Text+"_%';");
  }
else
ADOQuery1->Active=false;
ADOQuery1->Active=true;
if (Edit1->Text =="")
{
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT  *FROM Table");
ADOQuery1->Active=false;
ADOQuery1->Active=true;
}
 
}
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.03.2012, 23:03
Помогаю со студенческими работами здесь

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

VBA Excel автофильтр: вместо "фильтры по дате" предлагается "текстовые фильтры"
Доброго времени суток, уважаемые форумчане! Пожалуйста, подскажите решение следующей дилеммы: С помощью VBA осуществляется перенос дат...

Поиск в google через Opera, переводит на nova.rambler через searchtds
Здравствуйте. Прошу помощи в решении проблемы. Подозреваю, что при установке обновления к игре не снял галочку для установки...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru