Transaction Status в Ado Connection
v.i.k
Дата: 09.10.2003 13:58:17
Помогите пожалуйста:
Происходит обрыв Connection; пытаюсь подключиться заново, но перед этим нужно закрыть Connection.
If AdoConnect.State <> 0 Then AdoConnect.Close
Если вовремя этого уже начата Transaction , то не возможно закрыть Connection , пытаюсь Rollback Transaction также не получается т.к выходит ошибка что Connection Failure.....
Пытаюсь написать таким образом:
If AdoConnect.State <> 0 Then
AdoConnect.CommitTrans
AdoConnect.Close
End if
Получаеться , но только если действительно Transaction уже начата , в противном случае ошибка "No Trancaction is Active".
Два вопроса:
1. Как узнать что Trancaction is Active ?
2. Правильно ли использовать AdoConnect.CommitTrans не доведя Trancaction
до конца, данные терять ни как нельзя.
Спасибо большое зарание.
bushmen
Дата: 09.10.2003 15:43:26
При обрыве соединения с сервером транзакция должна откатыватся сама.
v.i.k
Дата: 09.10.2003 16:43:08
Ни кто ни куда не откатывается.
Было бы хорошо.
Ну что ни кто не может помочь?
Два маленьких несчастненьких вопроса.
pkarklin
Дата: 09.10.2003 17:06:29
2 bushmen
При обрыве соединения с сервером транзакция должна откатыватся сама.
На сервере так и происходит. Но ADO об этом не знает.
2 v.i.k
Да вот кабы ты на Delphi писал, то я б помог. У TADOConection есть свойство InTransaction. И так такие проблемы решаются на ура, но ува на vb не знаю как.
aag
Дата: 09.10.2003 17:35:11
InTransaction в ADOConnection вообще-то устанавливается просто по результатам открытия транзакции. Т.е., в данному случае можно просто руками отслеживать начало транзакции и помечать в каком-нить голобальном флажке. Хотя способ не очень ошибкоустойчивый...
Nobody faults but mine... (LZ)
pkarklin
Дата: 10.10.2003 07:53:12
2 aag
InTransaction в ADOConnection вообще-то устанавливается просто по результатам открытия транзакции.
Так этого было бы и достаточно (хотя значение этого свойства может и не совпадать с реальным состоянием дел на сервере), но в чистом ADOConnection этого нет.