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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.09.2012, 19:50   #1
Fobos1994
 
Регистрация: 15.11.2011
Сообщений: 4
Вопрос Дополняющие запросы

Вопрос следующего характера!
нужно осуществить поиск по нескольким критериям
Тобиш,у меня есть 5 едитов,и я в любой из них могу ввести (номер зачетки,фамилию,имя и тд и тп).
но я хочу чтобы оно работало совокупно,я добился того что едиты работают отдельно друг от друга..
ну вот на прмере:
Допустим в базе есть:
Баранов Андрей и Баранов Богдан!
В едит,который отвечает за фамилию,я ввожу:"Бар.." и оно уже находит мне этих 2-х Барановых..,но мне вить нужен только Богдан,и тогда я перехожу в едит который отвечает за Имя, и туда ввожу :"Богд...", и увы,теперь оно мне выводит всех Богданов..а я хочу чтобы параметры поиска дополняли друг друга..как мне этого добится???

Примерный кусок кода:
Код:
 procedure TForm3.Edit1Change(Sender: TObject);
 var
 a:string;
 begin
 a:='';
 if (edit1.Text=a) then
 begin
 adoquery1.active := False;
 adoquery1.sql.clear; end
 else
 begin
 adoquery1.active := False;
 adoquery1.sql.clear;
 adoquery1.sql.add('SELECT [1].nomz, [1].[fam],[1].[name],[1].[pob],[1].[data],[1].[gr],[1].[spec] ');
 adoquery1.sql.add('FROM 1');
 ADOQuery1.Sql.Add('WHERE [1].nomz LIKE '+#39+Edit1.Text+'%'+#39);
 adoquery1.active := true;
 end;
 end;

Ну и такой кусок у меня соответсвенно на каждый едит,только немножко изменено поле по которому происходит поиск..

Последний раз редактировалось Stilet; 12.09.2012 в 21:37.
Fobos1994 вне форума Ответить с цитированием
Старый 12.09.2012, 20:55   #2
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

В этом случае дополнительные условия выборки могут присоединяться через слово AND.
Код:
  ADOQuery1.Sql.Add('WHERE [1].nomz LIKE '+#39+Edit1.Text+'%'+#39);
  if Edit2.Text <> '' then
    ADOQuery1.Sql.Add('and [1].fam LIKE '+#39+Edit2.Text+'%'+#39);
Скандербег вне форума Ответить с цитированием
Старый 12.09.2012, 21:09   #3
Fobos1994
 
Регистрация: 15.11.2011
Сообщений: 4
По умолчанию

А можете написать как через AND??
я просто пол дня уже страдаю..самой семантикой..
Fobos1994 вне форума Ответить с цитированием
Старый 12.09.2012, 21:24   #4
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Очень внимательно посмотрите на третью строчку в примере кода.
Новая строка запроса начинается со слова and.
Скандербег вне форума Ответить с цитированием
Старый 12.09.2012, 21:59   #5
Fobos1994
 
Регистрация: 15.11.2011
Сообщений: 4
По умолчанию

Спасибо,Отлично работает!!!
Fobos1994 вне форума Ответить с цитированием
Старый 13.09.2012, 12:17   #6
Follout
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Скандербег Посмотреть сообщение
В этом случае дополнительные условия выборки могут присоединяться через слово AND.
Код:
  ADOQuery1.Sql.Add('WHERE [1].nomz LIKE '+#39+Edit1.Text+'%'+#39);
  if Edit2.Text <> '' then
    ADOQuery1.Sql.Add('and [1].fam LIKE '+#39+Edit2.Text+'%'+#39);
Спасибо. Мне тоже пригодилось
Follout вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запросы vihlyaev SQL, базы данных 1 02.06.2011 21:32
Запросы в БД Valecus Microsoft Office Access 6 11.11.2010 21:55
С++. Запросы в БД morindos Помощь студентам 1 24.06.2010 11:42
Запросы к БД limon PHP 7 28.11.2008 20:29
Запросы к БД xDjarx БД в Delphi 6 14.05.2008 17:04