This is topic Как в TraceMode получить сообщение об ошибке при SQL запросе? in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/001275.html

Posted by Ave Oleg (Участник № / Member № 6246) on :
 
Здравствуйте.
Создана таблица в БД с 1 столбцом BarCode с индексом Primary, чтобы устранить запись дубликата. Как можно получить сообщение об ошибке (#1062 – Duplicate entry ’??′ for key ‘PRIMARY’) в TraceMode, если запись в БД не произошла и выдать сообщение, что найден дубликат?
 
Posted by Ave Oleg (Участник № / Member № 6246) on :
 
Делаю выводы, что как-то нужно использовать переменную @Message через генерацию сообщений.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Недостоверность каналу CALL.SQL выставляется только в том случае, когда ODBC-драйвер вернет сообщение об отсутствии возможности принять и передать SOL-запрос, т.е. по ошибкам сугубо интерфейсного характера.
О результатах разбора запроса и выполнении самого запроса в БД интерфейс ODBC-драйвера не сообщает.
Если недостоверность выставлена, то можно сформировать соответствующее сообщение и на экране, и в ОТ (в том числе и через переменную @Message.
 
Posted by Ave Oleg (Участник № / Member № 6246) on :
 
Для проверки, делаю запись данных в таблицу напрямую через программу управления данными HeidiSQL. При выявлении дубликата выходит ошибка (#1062 – Duplicate entry ’??′ for key ‘PRIMARY’) Хорошо здесь работает.
Но при запросе от TraceMode сообщение об ошибке нигде не появляется.
Не отсылается ли ошибка назад в TraceMode?
Если возможно да, то как можно применить переменную @Message?

Нашел в справке DEC-коды ошибок, диагностируемых МРВ (для CALL.SQL) - ERR_RT_WRITE (ошибка записи).
Или все же это ошибка интерфейсного характера?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Если ODBC-драйвер возвращает Trace Mode 6 сообщение об ошибке, оно должно быть зафиксировано в атрибуте 92, I2.
При этом каналу выставляется признак недостоверности (атрибут 4).
При получении признака недостоверности можно программно сгенерировать нужное Вам сообщение для записи. например, в ОТ. Или индицировать эту ситуацию на экране.
 
Posted by Ave Oleg (Участник № / Member № 6246) on :
 
Не совсем ясно "...Или индицировать эту ситуацию на экране..." ?
Сделал следующее, но не знаю как быть дальше?
Создал аргумент экрана с привязкой к тексту. Привязал этот аргумент к базе данных по атрибуту 92,I2.
В свойствах базы данных установил атрибут 4 Достоверность.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
ГЭ "Текст" надо привязать к атрибуту 4 канала CALL.SQL.
В свойстве "Текст" выбрать, например, ВИД_ИНДИКАЦИИ = "Arg=Конст" и настроить вывод текстового сообщения в зависимости от того, равно ли 0 значение этого атрибута.
Можно использовать не "Текст", а какой-либо из цветовых атрибутов этого ГЭ.

Если атрибут 92,I2 действительно возвращает некий код ошибки, можно построить аналогичную индикацию, которая будет определяться значениями возвращаемых кодов ошибки. При том можно воспользоваться видом индикации, например, "Набор{Arg = Конст}".
 
Posted by Ave Oleg (Участник № / Member № 6246) on :
 
Не ясно.
Аргумент текста на экране привязали к атрибуту канала CALL.SQL 4)Достоверность. А что нужно делать с атрибутом 92,I2?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Если ODBC-драйвер возвращает ненулевой код ошибки, он будет отображен в атрибуте 92,I2.
Вы можете затем расшифровать его по описанию кодов ошибок из документации на установленный драйвер ODBC.
Далее можно поступать с этой информацией по своему усмотрению: либо выводить этот код на экран или (программно) в Отчет тревог, либо, как было предложено выше, настроить индикацию на экране (текстовую или цветовую) по известным Вам расшифровкам кодов ошибок, возвращаемых драйвером ODBC.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2