PROP:SQL обработать ERRORCODE

Clarion, Clarion 7

Модератор: Дед Пахом

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

PROP:SQL обработать ERRORCODE

Сообщение gopstop2007 »

Столкнулся с ситуацией

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

invoice{PROP:SQL} = 'UPDATE invoice SET status_out = 1 WHERE oper_id IN(311,312) AND fdelete=0 AND inv_root=12345;
IF ERRORCODE()
       invoice{PROP:SQL} = 'ROLLBACK;'
END                 
При выполнении запроса когда есть хотя бы одна запись, ошибки нет, но если запрос не нашел ни одной записи - получаю ошибку. Вопрос, правильно ли это? В моем понимании ошибка должна быть при выполнении запроса и сервер вернул ошибку, а не когда результат ноль записей.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 345
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)

PROP:SQL обработать ERRORCODE

Сообщение ingasoftplus »

А что за ошибка??? По идее, PROP:SQL и не знает что там ты делаешь, записи смотришь или обновляешь. Ошибку дает драйвер, если это ошибка. 0 обновленных записей - не могут быть ошибкой! Может синтаксис строки update формируется неверный?

это вообще как?
'UPDATE invoice SET status_out = 1 WHERE oper_id IN(311,312) AND fdelete=0 AND inv_root=12345;
где закрывающий ' ???
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2745
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия
Контактная информация:

PROP:SQL обработать ERRORCODE

Сообщение Дед Пахом »

В чём проблема писать в лог ERRORCODE(), ERROR(), FILEERROR(), FILEERRORCODE()?
С уважением, ДП
gopstop2007
✯ Ветеран ✯
Сообщения: 1654
Зарегистрирован: 25 Март 2009, 21:55

PROP:SQL обработать ERRORCODE

Сообщение gopstop2007 »

ingasoftplus писал(а): 14 Июнь 2022, 10:21 А что за ошибка??? По идее, PROP:SQL и не знает что там ты делаешь, записи смотришь или обновляешь. Ошибку дает драйвер, если это ошибка. 0 обновленных записей - не могут быть ошибкой! Может синтаксис строки update формируется неверный?

это вообще как?
'UPDATE invoice SET status_out = 1 WHERE oper_id IN(311,312) AND fdelete=0 AND inv_root=12345;
где закрывающий ' ???
Насчет '`', он есь просто ошибся при копировании кода. Этот запрос работает без ошибок прямо на сервере (проверял с помощью Navicat) , при любом варианте возвращает ответ, нет записей или есть измененные записи.
Последний раз редактировалось gopstop2007 14 Июнь 2022, 11:35, всего редактировалось 1 раз.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
gopstop2007
✯ Ветеран ✯
Сообщения: 1654
Зарегистрирован: 25 Март 2009, 21:55

PROP:SQL обработать ERRORCODE

Сообщение gopstop2007 »

Дед Пахом писал(а): 14 Июнь 2022, 10:54 В чём проблема писать в лог ERRORCODE(), ERROR(), FILEERROR(), FILEERRORCODE()?
До Вашего ответа, проверял разницу в проверке ERROCODE() vs FILEERRORCODE()
При FILEERRORCODE() не появляется ошибка при результате ноль записей.
Поставил пока FILEERRORCODE(), проверю в работе.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2745
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия
Контактная информация:

PROP:SQL обработать ERRORCODE

Сообщение Дед Пахом »

Так какая ошибка-то?
С уважением, ДП
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 345
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)

PROP:SQL обработать ERRORCODE

Сообщение ingasoftplus »

The FILEERRORCODE procedure returns a string containing the code number for the "native" error message from the file system (file driver) being used to access a data file. Valid only when ERRORCODE() = 90 or ERRORCODE() = 47.
так что, у вас не File Driver Error или Invalid Record Declaration

ну а что - сделайте полный ERRORCODE(), ERROR(), FILEERROR(), FILEERRORCODE() и поймите, что происходит. Может у вас банально таблица не открыта или ....
gopstop2007
✯ Ветеран ✯
Сообщения: 1654
Зарегистрирован: 25 Март 2009, 21:55

PROP:SQL обработать ERRORCODE

Сообщение gopstop2007 »

Дед Пахом писал(а): 14 Июнь 2022, 11:42 Так какая ошибка-то?
ERRORCODE - возращает 0 (ноль)
FILEERRORCODE() - ничего не возвращает.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2745
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия
Контактная информация:

PROP:SQL обработать ERRORCODE

Сообщение Дед Пахом »

Как насчёт этого:
gopstop2007 писал(а): 14 Июнь 2022, 8:14 При выполнении запроса когда есть хотя бы одна запись, ошибки нет, но если запрос не нашел ни одной записи - получаю ошибку.
С уважением, ДП
gopstop2007
✯ Ветеран ✯
Сообщения: 1654
Зарегистрирован: 25 Март 2009, 21:55

PROP:SQL обработать ERRORCODE

Сообщение gopstop2007 »

Дед Пахом писал(а): 14 Июнь 2022, 19:24 Как насчёт этого:
gopstop2007 писал(а): 14 Июнь 2022, 8:14 При выполнении запроса когда есть хотя бы одна запись, ошибки нет, но если запрос не нашел ни одной записи - получаю ошибку.
Сам в шоке, показывать

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

IF ERRORCODE() > 0 вместо IF ERRORCODE()
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2745
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия
Контактная информация:

PROP:SQL обработать ERRORCODE

Сообщение Дед Пахом »

Дело в том, что ERRORCODE() возвращает не просто "Есть ошибка"/"Нет ошибки", а код ошибки, которых порядка 90 штук, и каждый означает конкретную причину.
С уважением, ДП
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 345
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)

PROP:SQL обработать ERRORCODE

Сообщение ingasoftplus »

так и

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

IF ERRORCODE()
тоже отлично работает. В кларионе - если есть значение (в переменной или в коде ошибке, число или строка - не важно) - то это TRUE, если 0 (ноль) или пустая строка - то FALSE.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2745
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия
Контактная информация:

PROP:SQL обработать ERRORCODE

Сообщение Дед Пахом »

ingasoftplus писал(а): 15 Июнь 2022, 10:10 тоже отлично работает.
MESSAGE(ERRORCODE()) тоже отлично работает, только вот почему-то @gopstop2007 об этом не знает.
С уважением, ДП
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 345
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)

PROP:SQL обработать ERRORCODE

Сообщение ingasoftplus »

Дед Пахом писал(а): 15 Июнь 2022, 11:08 только вот почему-то @gopstop2007 об этом не знает.
не все сразу!!! Теперь - знает :idied:
gopstop2007
✯ Ветеран ✯
Сообщения: 1654
Зарегистрирован: 25 Март 2009, 21:55

PROP:SQL обработать ERRORCODE

Сообщение gopstop2007 »

ingasoftplus писал(а): 15 Июнь 2022, 12:37
Дед Пахом писал(а): 15 Июнь 2022, 11:08 только вот почему-то @gopstop2007 об этом не знает.
не все сразу!!! Теперь - знает :idied:
Внимательнее посмотрите на мой первый пост.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Ответить