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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2013, 23:32   #1
semirek
 
Регистрация: 03.02.2011
Сообщений: 5
Восклицание Ошибка при выполнении запроса на UPDATE

Здраствуйте! Есть проблема пытаюсь создать такой SQL запрос:

ADOCommand1.CommandText:= 'UPDATE TreeStruktur
SET AbsInd = CASE WHEN AbsInd < ' + IntToStr(x1) +
' THEN AbsInd + ' + IntToStr(x3-(x1-1)) +
' ELSE (AbsInd - ' + IntToStr(x1-x2) + ') END' +
' WHERE AbsInd BETWEEN ' +
IntToStr(x2) + ' AND ' + IntToStr(x3) + ' ORDER BY AbsInd';
ADOCommand1.Execute;

при попытке извлечения, выдаёт ошибку:
... 'Ошибка синтаксиса (пропущен оператор) в выражении запроса 'CASE WHEN AbsInd < 360 THEN AbsInd + 1 ELSE (AbsInd - 14) END''.
ума не приложу чё ему ещё надо? Помогите пожалуста.
semirek вне форума Ответить с цитированием
Старый 16.01.2013, 03:22   #2
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,770
По умолчанию

Что делает order by в команде update?
Vapaamies вне форума Ответить с цитированием
Старый 16.01.2013, 12:59   #3
semirek
 
Регистрация: 03.02.2011
Сообщений: 5
По умолчанию

согласен order by тут не правельно, но отсутствие его там не устраняет проблемы
semirek вне форума Ответить с цитированием
Старый 16.01.2013, 13:26   #4
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

сделайте
inputbox('','',ADOCommand1.CommandT ext);
перед ADOCommand1.Execute;
и выложите сюда
А то с вашими кавычками глаза сломаешь. хоть бы пользовались кнопкой #
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 16.01.2013, 13:39   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я думаю что CASE нужно в () взять как выражение
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.01.2013, 14:06   #6
semirek
 
Регистрация: 03.02.2011
Сообщений: 5
По умолчанию

Код:
UPDATE TreeStruktur 
   SET AbsInd = (CASE WHEN AbsInd < 360 THEN AbsInd + 1
                         ELSE (AbsInd - 14) END)
   WHERE AbsInd BETWEEN 346 AND 360
и всё равно не работает, пробовал тоже через IF... ELSE и то же ошибку выдаёт

Последний раз редактировалось semirek; 16.01.2013 в 14:10.
semirek вне форума Ответить с цитированием
Старый 16.01.2013, 14:12   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

СУБД какая? Может в ней вообще case when не поддерживается или есть нюансы в синтаксисе. Подозреваю что ACCESS, там IIF
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 16.01.2013 в 14:21.
Аватар вне форума Ответить с цитированием
Старый 16.01.2013, 14:23   #8
semirek
 
Регистрация: 03.02.2011
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
СУБД какая? Может в ней вообще case when не поддерживается или есть нюансы в синтаксисе. Подозреваю что ACCESS, там IIF
да ACCESS, а как с iif работать, в моём случае?
semirek вне форума Ответить с цитированием
Старый 16.01.2013, 14:28   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Попробуйте так, должно проглотить
Код:
SET AbsInd = IIF(AbsInd < 360,AbsInd + 1,AbsInd - 14)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.01.2013, 14:38   #10
semirek
 
Регистрация: 03.02.2011
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Попробуйте так, должно проглотить
Код:
SET AbsInd = IIF(AbsInd < 360,AbsInd + 1,AbsInd - 14)
уже и сам сообразил точно так же, но всё равно огромное спасибо
всё работает
semirek вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при выполнении запроса dima_r SQL, базы данных 6 14.04.2011 17:47
Ошибка при выполнении запроса(SUM() и GROUP by) к таблице excel. kaval88 Microsoft Office Excel 4 20.02.2011 15:31
Ошибка при выполнении запроса Шани БД в Delphi 4 27.07.2007 13:04
Ошибка при выполнении запроса Elena БД в Delphi 3 14.06.2007 15:13
Ошибка при выполнении запроса Elena БД в Delphi 2 25.05.2007 16:19