powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Транзакции...
19 сообщений из 19, страница 1 из 1
Транзакции...
    #32758500
Мудрый клён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim Cnn As New ADODB.Connection
Set Cnn = CurrentProject.Connection

Cnn.BeginTrans

Cnn.Execute (strSQL1)
Cnn.Execute (strSQL2)
Cnn.Execute (strSQL3)
Cnn.Execute (strSQL4)
Cnn.CommitTrans

---------------------------------------
Если произойдет ошибка на шаге
Cnn.Execute (strSQL4)

Откатятся ли транзакции
Cnn.Execute (strSQL1)
Cnn.Execute (strSQL2)
Cnn.Execute (strSQL3) ?
...
Рейтинг: 0 / 0
Транзакции...
    #32758512
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а по твоему транзакции для чего нужны?
в транзакции все операции с данными рассматриваются как единое целое, и в случае ошибки одной из операций, вся транзакция откатывается.

RTFM

только тебе надо код модифицировать:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim Cnn As New ADODB.Connection
Set Cnn = CurrentProject.Connection
on error goto error_handler
Cnn.BeginTrans

Cnn.Execute (strSQL1)
Cnn.Execute (strSQL2)
Cnn.Execute (strSQL3)
Cnn.Execute (strSQL4)
Cnn.CommitTrans
exit sub
error_handler
 msgbox err.description,err.number
 Rollback

...
Рейтинг: 0 / 0
Транзакции...
    #32758521
ищ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
судя по твоему коду
отката нет.
на вопрос:
Откатятся ли транзакции?
отвечаем - не откатятся
...
Рейтинг: 0 / 0
Транзакции...
    #32758532
Мудрый клён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ищсудя по твоему коду
отката нет.
на вопрос:
Откатятся ли транзакции?
отвечаем - не откатятся

Судя по моему коду, транзакции ПРАКТИЧЕСКИ ОТКАТИЛИСЬ !
Проверено: Access XP. mdb.
...
Рейтинг: 0 / 0
Транзакции...
    #32758537
ищ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Судя по моему коду, транзакции ПРАКТИЧЕСКИ ОТКАТИЛИСЬ "

на так и не фиг было спрашивать
...
Рейтинг: 0 / 0
Транзакции...
    #32758539
Мудрый клён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kelme
только тебе надо код модифицировать:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim Cnn As New ADODB.Connection
Set Cnn = CurrentProject.Connection
on error goto error_handler
Cnn.BeginTrans

Cnn.Execute (strSQL1)
Cnn.Execute (strSQL2)
Cnn.Execute (strSQL3)
Cnn.Execute (strSQL4)
Cnn.CommitTrans
exit sub
error_handler
 msgbox err.description,err.number
 Rollback


Вместо Rollback :
Cnn.RollbackTrans

Благодарю сэр!
...
Рейтинг: 0 / 0
Транзакции...
    #32758540
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Судя по моему коду, транзакции ПРАКТИЧЕСКИ ОТКАТИЛИСЬ !


Транзакция либо откатывается полностью, либо не откатывается вообще

У тебя в коде нет Cnn.Rollback!

RTFM
...
Рейтинг: 0 / 0
Транзакции...
    #32758564
Iskander68
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знал такого слово. Теперь знаю - и поделюсь с любопытными :-)

RTFM
From Wikipedia, the free encyclopedia.
RTFM is an acronym for the statement "Read The Fucking Manual". This
instruction is usually given in response to a question that can be answered
easily by reading relevant documentation, and suggests that the inquirer may
be wasting people's time. To avoid the use of the expletive "fucking" in the
statement (which is offensive to many people), RTFM also means "Read The
Foolish Manual", along with other suggestive words beginning with F. It is
also sometimes taken to mean "Read The Friendly Manual" or "Read The Fine
Manual" and used less pejoratively. Alternately, the "F" may be dropped
entirely and the acronym can be rendered as "RTM" (Read The Manual).

--
Regards
Alexander Artamonov

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Транзакции...
    #32758570
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по моему коду, транзакции ПРАКТИЧЕСКИ ОТКАТИЛИСЬ
Фраза дня. Однозначно.
Так и представляю себе транзакцию, которая практически откатилась, ну чуть-чуть все-таки осталось.

Кстати, если бы конекшн был бы создан новый (а не CurrentProject.Connection), то транзакция таки откатилась бы - при освобождении последней ссылки на объект
...
Рейтинг: 0 / 0
Транзакции...
    #32758594
Мудрый клён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох Позорный Судя по моему коду, транзакции ПРАКТИЧЕСКИ ОТКАТИЛИСЬ
Фраза дня. Однозначно.
Так и представляю себе транзакцию, которая практически откатилась, ну чуть-чуть все-таки осталось.

Кстати, если бы конекшн был бы создан новый (а не CurrentProject.Connection), то транзакция таки откатилась бы - при освобождении последней ссылки на объект

Я Вам говорю откатилась транзакция.
Практически я имел ввиду что на деле проверено.
да че говорить...проверяйте...
...
Рейтинг: 0 / 0
Транзакции...
    #32758609
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rollback нужно делать ДО выдачи сообщения
...
Рейтинг: 0 / 0
Транзакции...
    #32758612
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык транзакция не только практически, но и теоретически откатиться должна
...
Рейтинг: 0 / 0
Транзакции...
    #32758616
Мудрый клён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Shrollback нужно делать ДО выдачи сообщения
Я что я спорю?
Посмотри повыше.
...
Рейтинг: 0 / 0
Транзакции...
    #32758699
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Клен
Я Вам говорю откатилась транзакция.
Верю, верю...
Просто я хотел сказать, что если бы был код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Public Function test()
    Dim cnn As ADODB.Connection
    Set cnn = New ADODB.Connection
    cnn.Open "....."
    cnn.BeginTrans
        ....
    cnn.CommitTrans
End Fucntion
то при ошибке транзакция откатилась бы точно, т.к. на выходе из функции произойдет неявный вызов Set cnn = Nothing, который неявно приведет к вызову cnn.Rollback. Так что ищ был неправ. Для ролбэка явный вызов не нужен, он и сам случится (хотя такой стиль программирования сложно назвать хорошим)

В случае же использования CurrentProject.Connection действует все то же самое, но не столь очевидно. Можно предположить, что CurrentProject.Connection вернет ссылку на уже существующий объект (на который кто-то уже ссылается), и тогда неявный вызов Set cnn = Nothing не приведет к уничтожению объекта и откату. Но предположение это ошибочно (и я в очередной раз на эти грабли наступил :))

Практически я имел ввиду что на деле проверено.
Напомнило мне, как я однажды тупил над текстом Достоевкого. Ну не сразу до меня дошло, что в 19-ом веке слово "наверное" употреблялось в значении "наверняка, точно", а не в современном значении "может быть"
...
Рейтинг: 0 / 0
Транзакции...
    #32758723
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мудрый клён Alexey Shrollback нужно делать ДО выдачи сообщения
Я что я спорю?
Посмотри повыше.
Код: plaintext
1.
2.
3.
error_handler:
 msgbox err.description,err.number
 conn.Rollback

сильно нездоровый стиль программирование, пока юзер любуется на сообщение, блокировки на таблицах продолжают висеть
...
Рейтинг: 0 / 0
Транзакции...
    #32758745
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
error_handler:
msgbox err.description,err.number
conn.Rollback



сильно нездоровый стиль программирование, пока юзер любуется на сообщение, блокировки на таблицах продолжают висеть

Conn.Rollback
msgbox err.description,err.number

так устроит? :)
...
Рейтинг: 0 / 0
Транзакции...
    #32758768
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еслиб я не видел последствийЮ я бы может быть не возмущался :)
...
Рейтинг: 0 / 0
Транзакции...
    #32758773
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я просто описАлся
...
Рейтинг: 0 / 0
Транзакции...
    #32758774
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все это от лукавового :)
тут еще и думать надо, в каком порядке мсгбоксы выдавать

вот не было бы у вас обработчика ошибок совсем - за вас все аксес бы сделал. сначала поубивал бы все локальные переменные, потом бы уже или ошибку вверх бросил, или, если выше некуда, вывел бы свое сообщение об ошибке (в случае mde/ade)

это я так... шутю...
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Транзакции...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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