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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2013, 15:14   #1
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию Oracle+Delphi Фильтр после DECODE

Здравствуйте ребята. Формирую простои запрос SQL Developer
Код:
select  first_name, last_name, job_id, 
DECODE(job_id,'IT_PROG','Прогр-ты','AD_PRES','Президент','Unknown')  Професия
from employees
Хочу отфильтровать поля который появился после DECODE через WHERE фильтрую вот так и работает
Код:
select  first_name, last_name, job_id, 
DECODE(job_id,'IT_PROG','Прогр-ты','AD_PRES','Президент','Unknown')  Професия
from employees
where DECODE(job_id,'IT_PROG','Прогр-ты','AD_PRES','Президент','Unknown') = 'Президент';
Вопрос: Как это фильтр реализовать из Delphi

Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 OraQuery1.Close;
 OraQuery1.SQL.Clear;
 OraQuery1.SQL.Add('select  first_name, last_name, job_id, '+
                   'DECODE(job_id,''IT_PROG'',''Прогр-ты'',''AD_PRES'',''Президент'',''Unknown'')  Професия '+
                   'from employees');
 OraQuery1.SQL.Add('WHERE DECODE(job_id,''IT_PROG'',''Прогр-ты'',''AD_PRES'',''Президент'',''Unknown'') IN ('+ Edit1.Text+ ')');
 OraQuery1.Open;
end;
Так не работает.... Пожалуйста помогите разобрать как передать правильно where DECODE(job_id,'IT_PROG','Прогр-ты','AD_PRES','Президент','Unknown' ) = что бы работал
xxbesoxx вне форума Ответить с цитированием
Старый 09.08.2013, 15:41   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Думаю так:
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 OraQuery1.Close;
 OraQuery1.SQL.Clear;
 OraQuery1.SQL.Text:=
    'select  first_name, last_name, job_id, '+
                   'DECODE(job_id,'+QuotedStr('IT_PROG')+','+QuotedStr('Прогр-ты')+','+QuotedStr('AD_PRES')+','+QuotedStr('Президент')+','+QuotedStr('Unknown')
+')  Професия '+
                   'from employees WHERE DECODE(job_id,'+QuotedStr('IT_PROG')+','+QuotedStr('Прогр-ты')+','+QuotedStr('AD_PRES')+','+QuotedStr('Президент')+','+QuotedStr('Unknown')+') IN ('+ Edit1.Text+ ')');

 OraQuery1.Open;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.08.2013, 15:48   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так?
Код:
 OraQuery1.SQL.Add('WHERE DECODE(job_id,''IT_PROG'',''Прогр-ты'',''AD_PRES'',''Президент'',''Unknown'') IN ('+ QuotedStr( Edit1.Text )+ ')');
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.08.2013, 16:17   #4
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Работает только на 1 значения. на пример ''Прогр-ты' если мне нужно передать несколько значения из Edit1 вот так ('Президент', 'Прогр-ты')

Вот такой запрос

Код:
select  first_name, last_name, job_id, 
DECODE(job_id,'IT_PROG','Прогр-ты','AD_PRES','Президент','Unknown')  Професия
from employees
where DECODE(job_id,'IT_PROG','Прогр-ты','AD_PRES','Президент','Unknown') IN ('Президент', 'Прогр-ты');
Как это написать правильно ?
xxbesoxx вне форума Ответить с цитированием
Старый 09.08.2013, 16:25   #5
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

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

Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 OraQuery1.Close;
 OraQuery1.SQL.Clear;
 OraQuery1.SQL.Add('select  first_name, last_name, job_id, '+
                   'DECODE(job_id,''IT_PROG'',''Прогр-ты'',''AD_PRES'',''Президент'',''Unknown'')  Професия '+
                   'from employees');
 OraQuery1.SQL.Add('WHERE DECODE(job_id,''IT_PROG'',''Прогр-ты'',''AD_PRES'',''Президент'',''Unknown'') IN (' + QuotedStr(Edit1.Text) + ')');
OraQuery1.Open;
end;
xxbesoxx вне форума Ответить с цитированием
Старый 09.08.2013, 17:09   #6
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Stilet , Serge_Bliznykov Огромное спасибо. Тема можно закрыт
xxbesoxx вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
nvl и decode в одном условии, есть смисл? lyb4eg SQL, базы данных 0 26.10.2011 17:40
json encode\decode в javascript mrgrudge JavaScript, Ajax 5 01.06.2011 16:34
HTML Decode kroŧ Работа с сетью в Delphi 2 26.10.2010 13:54
Фильтр вывода. Удаление после точки. sp_Иришка Общие вопросы C/C++ 1 15.10.2009 16:26
Decode Yoger Общие вопросы Delphi 2 17.01.2007 14:55