Mysql запрос выдает ошибку

ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
gopstop2007
Ветеран
Сообщения: 1155
Зарегистрирован: 25 Март 2009, 21:55

Mysql запрос выдает ошибку

Сообщение gopstop2007 » 19 Январь 2018, 16:45

Создал запрос, проверил в MySQL - выполняется без ошибок, скопировал в Clarion10, при выполнении выдает ошибку - "PRODUCT : ошибка файла драйвера".

Код: Выделить всё

product{PROP:SQL}='UPDATE product t1 ' &|
                    ' JOIN valute t2 on t2.valute_id = t1.VAL_START ' &|
                    ' JOIN valute t3 on t3.valute_id = t1.VAL_SALE ' &|
    ' SET t1.PRICE_SALE = ' &|
    '( CASE ' &|
	' WHEN t1.VAL_START = t1.VAL_SALE AND t1.NACHENKA > 0 THEN t1.PRICE_START + t1.PRICE_START * t1.NACHENKA/100 ' &|
	' WHEN t1.VAL_START <> t1.VAL_SALE AND t1.NACHENKA > 0 THEN ' &|
		' CASE ' &|
		' WHEN t2.CURR_TODAY = 1 THEN IF (t3.FUNC='/',' &|
		    ' (t1.PRICE_START + t1.PRICE_START * t1.NACHENKA/100)*t3.CURR_TODAY,' &|
		    ' (t1.PRICE_START + t1.PRICE_START * t1.NACHENKA/100)/t3.CURR_TODAY)' &|
		' WHEN t3.CURR_TODAY = 1 THEN IF(t2.FUNC='/',' &|
			' (t1.PRICE_START + t1.PRICE_START * t1.NACHENKA/100)/t2.CURR_TODAY,' &|
			' (t1.PRICE_START + t1.PRICE_START * t1.NACHENKA/100)*t2.CURR_TODAY)' &|
		' ELSE t1.PRICE_SALE ' &|
		' END ' &|
    ' END ) ;'
IF ErrorCode() THEN Message('Файл: ' & Choose(Error()=FileSystemErr, FileError(), Error())) END
В mysql этот же код проходит без ошибок

Код: Выделить всё

   UPDATE product t1
	JOIN valute t2 on t2.valute_id = t1.VAL_START
	JOIN valute t3 on t3.valute_id = t1.VAL_SALE
   SET t1.PRICE_SALE = 
   CASE
	WHEN (t1.VAL_START = t1.VAL_SALE  AND t1.NACHENKA > 0) THEN t1.PRICE_START + t1.PRICE_START * t1.NACHENKA/100
	WHEN (t1.VAL_START <> t1.VAL_SALE AND t1.NACHENKA > 0) THEN
		CASE
		WHEN t2.CURR_TODAY = 1 THEN IF( t3.FUNC='/',
			(t1.PRICE_START + t1.PRICE_START * t1.NACHENKA/100)*t3.CURR_TODAY,
			(t1.PRICE_START + t1.PRICE_START * t1.NACHENKA/100)/t3.CURR_TODAY )
		WHEN t3.CURR_TODAY = 1 THEN IF( t2.FUNC='/',
			(t1.PRICE_START + t1.PRICE_START * t1.NACHENKA/100)/t2.CURR_TODAY,
			(t1.PRICE_START + t1.PRICE_START * t1.NACHENKA/100)*t2.CURR_TODAY )
		ELSE t1.PRICE_SALE
		END
   END;
Может чего то упустил?! :) Глаз замылился, буду рад любой подсказке
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

Ал
Ветеран
Сообщения: 751
Зарегистрирован: 08 Июль 2005, 5:48
Откуда: Россия

Mysql запрос выдает ошибку

Сообщение Ал » 19 Январь 2018, 16:53

'/' - так и писать в клаше :?:

Lens
Новичок
Сообщения: 12
Зарегистрирован: 24 Ноябрь 2005, 18:50

Mysql запрос выдает ошибку

Сообщение Lens » 19 Январь 2018, 17:12

Ал писал(а):
19 Январь 2018, 16:53
'/' - так и писать в клаше :?:
Правильно будет в запросе <39>/<39> вместо '/'

gopstop2007
Ветеран
Сообщения: 1155
Зарегистрирован: 25 Март 2009, 21:55

Mysql запрос выдает ошибку

Сообщение gopstop2007 » 19 Январь 2018, 17:21

Ал писал(а):
19 Январь 2018, 16:53
'/' - так и писать в клаше :?:
"'эх Семен Семеныч" :D
Спасибо, оно, лог (file{PROP:Profile}) , показывал строку которой даже намека на синтаксис

Код: Выделить всё

mySQL server version for the right syntax to use near '(t1.PRICE_START + t1.PRICE_START * t1.NACHENKA/100)*t3.CURR_TODAY, (t1.PRICE_STA' at line 1 Time Taken:0.02 secs

Ошибка в .FUNC='/' надо было в одинарно-двойные кавычки ''/''
Lens писал(а):
19 Январь 2018, 17:12
Правильно будет в запросе <39>/<39> вместо '/'
Спасибо
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

Ответить