Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка в запросе [D7, XP]


rnts ©   (2010-09-06 15:15:00) 

При выполнении кода ниже возникает ошибка:Project raised exception class EDBEngineError with message 'Invalid use of keyword. Token: when Line number:1' , хотя в любом SQL-клиенте все работает.

select_sql:=' Select id,npr,(case when npr like ''%/%'' then substr (npr,1,pos(npr,''/'')-1)::integer ';
select_sql:=select_sql+ ' else npr::integer  end ) from asu_nizd  ';
orderby_sql:=' order by 3,1 ';

  query1.close;
  query1.sql.Text:= select_sql + orderby_sql;
  query1.open;

Так тоже не получается:
select_sql:= ' Select npr,id,cast (case when npr like ''%/%'' then substr(npr,1,pos(npr,''/'')-1) ';
select_sql:= select_sql+' else npr end as integer) from asu_nizd  ';

подскажите, в чем м.б. проблема. СУБД - Informix


Anatoly Podgoretsky   (2010-09-07 11:09:00) [1]

А он что ТАКОЙ запрос пытается редактировать в гриде?
Это он погорячился.
Но меня смущает, что он утверждает, что это работает?


sniknik   (2010-09-07 11:01:00) [2]

> Попробовал внести текст запроса прямо в компонент - тоже не помогает.
это говорилось не потому, что поможет, а чтобы понять что происходит, и что я имел ввиду...
тупой перебор не пойми чего естественно не помогает...

> Но мне надо, чтобы query был редактируемым.
как редактировать вычисленное поле? что должно записаться, куда, и как это должен понять BDE/ODBC/... и т.д. по цепочке, что ты там используешь.

убери вычисления из запроса, сделай их на клиенте, и сам "рули" тем что записывается.


Anatoly Podgoretsky   (2010-09-07 10:34:00) [3]

Ну и пусть редактирует, раз работает.


rnts   (2010-09-07 10:29:00) [4]

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


Anatoly Podgoretsky   (2010-09-07 10:26:00) [5]

Раз с RequestLive=false работает, то зачем тебе еще что то?


rnts   (2010-09-07 10:06:00) [6]

Обнаружил, что с RequestLive=false работает. Но мне надо, чтобы query был редактируемым. Попробовал внести текст запроса прямо в компонент - тоже не помогает. Можно ли сделать так, чтобы с requestLive=true запрос работал?
Спасибо!


sniknik   (2010-09-07 02:57:00) [7]

> pos, я сам добавил
со своим pos 2 вариант становится рабочим.

> имели ввиду tquery.params ?
внеси первый вариант в режиме разработки, прямо в компонент, да посмотри что получилось.


Loginov Dmitry   (2010-09-06 23:12:00) [8]

query1.ParamCheck := False;
?


rnts   (2010-09-06 21:23:00) [9]


> sniknik ©   (06.09.10 16:30) [3]
> > СУБД - Informix
> Routine (pos) can not be resolved


да, хранимку, вычисляющую позицию символа в строке - pos, я сам добавил, в информиксе такой функции нет.
sniknik, под параметрами вы имели ввиду tquery.params ?


sniknik   (2010-09-06 16:30:00) [10]

> СУБД - Informix
Routine (pos) can not be resolved


sniknik   (2010-09-06 16:26:00) [11]

> в чем м.б. проблема.
в параметрах, ты их не видишь но они есть. как суслики. @ солдаты.


rnts   (2010-09-06 15:26:00) [12]

юзаю BDE


Наверх

Титульная страница Поиск, карта сайта Написать письмо