Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Транзакции... / 19 сообщений из 19, страница 1 из 1
28.10.2004, 10:37:11
    #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
28.10.2004, 10:40:35
    #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
28.10.2004, 10:43:12
    #32758521
ищ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции...
судя по твоему коду
отката нет.
на вопрос:
Откатятся ли транзакции?
отвечаем - не откатятся
...
Рейтинг: 0 / 0
28.10.2004, 10:45:38
    #32758532
Мудрый клён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции...
ищсудя по твоему коду
отката нет.
на вопрос:
Откатятся ли транзакции?
отвечаем - не откатятся

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

на так и не фиг было спрашивать
...
Рейтинг: 0 / 0
28.10.2004, 10:48:15
    #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
28.10.2004, 10:48:19
    #32758540
Kelme
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции...
автор
Судя по моему коду, транзакции ПРАКТИЧЕСКИ ОТКАТИЛИСЬ !


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

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

RTFM
...
Рейтинг: 0 / 0
28.10.2004, 10:52:51
    #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
28.10.2004, 10:54:11
    #32758570
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции...
Судя по моему коду, транзакции ПРАКТИЧЕСКИ ОТКАТИЛИСЬ
Фраза дня. Однозначно.
Так и представляю себе транзакцию, которая практически откатилась, ну чуть-чуть все-таки осталось.

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

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

Я Вам говорю откатилась транзакция.
Практически я имел ввиду что на деле проверено.
да че говорить...проверяйте...
...
Рейтинг: 0 / 0
28.10.2004, 11:07:04
    #32758609
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции...
rollback нужно делать ДО выдачи сообщения
...
Рейтинг: 0 / 0
28.10.2004, 11:08:37
    #32758612
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции...
Дык транзакция не только практически, но и теоретически откатиться должна
...
Рейтинг: 0 / 0
28.10.2004, 11:09:29
    #32758616
Мудрый клён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции...
Alexey Shrollback нужно делать ДО выдачи сообщения
Я что я спорю?
Посмотри повыше.
...
Рейтинг: 0 / 0
28.10.2004, 11:37:35
    #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
28.10.2004, 11:46:46
    #32758723
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции...
Мудрый клён Alexey Shrollback нужно делать ДО выдачи сообщения
Я что я спорю?
Посмотри повыше.
Код: plaintext
1.
2.
3.
error_handler:
 msgbox err.description,err.number
 conn.Rollback

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



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

Conn.Rollback
msgbox err.description,err.number

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

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

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


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