Admin писал(а):пишу такой код
Код: Выделить всё
IF MAVLOGOUT()
MESSAGE('Ощибка вызова LOGOUT #1')
END
IF MAVLOGOUT()
MESSAGE('Ощибка вызова LOGOUT #2')
END
IF MAVCOMMIT()
MESSAGE('Ошибка MAVCOMMIT #1')
END
IF MAVCOMMIT()
MESSAGE('Ошибка MAVCOMMIT #2')
END
ни одного MESSAGE не показывается
В лог пишется следующее:
Код: Выделить всё
Begin transaction Return Code : 0
Transaction already opened
Commit transaction Return Code : 0
1. почему так?
2. какой COMMIT выполнился?
в библиотеке есть симафоры, пофторные LOGOUIT'ы игнорируются библиотекой, выдавать ошибку не вижу смысла, то же касается и MAVCOMMIT и MAVROLLBACK, если транзакция не открывалась то и эти соответвующие операции будут игнорироваться библиотекой
короче - это определённого рода защита от шаловливых ручек
все эти три функции возвращают ошибку только в том случае если ошибка ODBCисшная, а не "ручная"
ЗЫ
или хотите вернуться к драйверным маразмам типа:
Файл уже открыт
Транзакция уже открыта и т д