powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как не допустить ошибку при повторном cnn.Begintrans (или Commit/rollback без begin)
4 сообщений из 4, страница 1 из 1
Как не допустить ошибку при повторном cnn.Begintrans (или Commit/rollback без begin)
    #32890277
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посоветуйте : как не запутаться с cnn.Begintrans :
Точнее как узнать , что она уже выдавалась, чтобы не было ошибки при такой последовательности команд :
(Здесь cnn - ADO connection.)

cnn.Begintrans
cnn.Begintrans

желательно обойтись без on error ...
...
Рейтинг: 0 / 0
Как не допустить ошибку при повторном cnn.Begintrans (или Commit/rollback без begin)
    #32890614
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Обработку ошибок религия запрещает? В VB(VBA) - зачастую это нормальный штатный приём. Если бы программа была написана на C - было бы иначе, в коде возврата любой COM функции имеются флажки ошибок и код ошибки, как и в обычнвх API функциях. в VB (VBA) исключение возбуждается не вызываемой функцией, в вызывающим кодом.

2) Перестроить структуру программы, забыть про аксессовские вложенные транзакции, в таком виде их нет ни MSSQL ни в Оракле.информация о неудаче при выполнении пользовательских процедур и функции должна возвращаться вызывающему через коды возврата, выходные параметрами или через исключения, либо всю логику перенести на сервер и использовать все особенности управления транзакциями соответствующего сервера(именованные контрольные точки, автономные транзакции и тп)
...
Рейтинг: 0 / 0
Как не допустить ошибку при повторном cnn.Begintrans (или Commit/rollback без begin)
    #32890767
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Обработку ошибок религия запрещает?
Да обработку ошибок не религия запрещает , а порой принципы оптимального построения программы. Только не поймите, что для всех случаев жизни говорю, Но как раз бывает, и это сечас так случилось, что легче не тратиться на аккуратное отслеживание в алгоритме всех начал транзакций, чтобы каждому соответсвовала своя закрывающая скобка, а перед закрывающей скобкой анализировать - была открыта транзакция или нет, видимо такое в VB невозможно. - только через ON ERROR ... ( как сейчас , собственно , и сделано.)

в VB (VBA) исключение возбуждается не вызываемой функцией, в вызывающим кодом.

Ну тут я или не понял, что сказано, или не согласен, впрочем это , как- то мне не очень важно.

2) Перестроить структуру программы, забыть про аксессовские вложенные транзакции,

Ну вроде как, вопрос так не стоял, ведь из него разве следует, что структура программы плоха ?
Вообще этот пункт, мне кажется, к вопросу отношения не имеет.

Вопрос :
Есть алгоритм, в нем вначале стоит(или не стоит, в зависимости от условий) cnn.Begintrans , на выходе надо сделать(ну или не сделать, в зависимости от тех же условий) cnn.Committrans (cnn.Rollbacktrans)

Так вот , чтобы не анализировать перед cnn.Committrans (cnn.Rollbacktrans) упомянутые выше зависимости от условий (анализ может оказаться довольно сложным, ну или не сложным , но не красиво нагружать алгоритм еще и этим ) , и приходится перед cnn.Committrans (cnn.Rollbacktrans) обрабатывать ошибку, но это тоже путь сложнее, чем могло бы быть , если бы , скажем в ADODB.COnnection существовал флажок - транзакция начата/окончена . Но раз такого флажка нет - то и ответ на вопрос, видимо будет - нельзя без ON ERROR .
...
Рейтинг: 0 / 0
Как не допустить ошибку при повторном cnn.Begintrans (или Commit/rollback без begin)
    #32890958
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор нельзя без ON ERROR
как ни печально - это так
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как не допустить ошибку при повторном cnn.Begintrans (или Commit/rollback без begin)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]