SergeyKa
Дата: 01.06.2004 10:56:40
Народ !!!
Вот какой вопрос ..
Как средствами ADO сделать вложенную транзакцию? Что то типа
cnn.begintrans
cnn.execute "UPDATE .... "
cnn.begintrans
cnn.execute "UPDATE ... "
cnn.committrans
cnn.committrans
ну так это не прокатывает (((
Senin Viktor
Дата: 01.06.2004 11:05:12
ну так это не прокатывает (((
И что, прямо так и пишет "Транзакция не прокатывает!" ? :)
Давай весь кусок кода и подробное сообщение об ошибке, если она была и почему ты решил, что она не прокатывает?
Заодно версии акеса, мдака
SergeyKa
Дата: 01.06.2004 11:14:06
Весь код таков ..
With cnn
.BeginTrans
.Execute "UPDATE TestTable SET Name=Name+1"
.BeginTrans
.Execute "UPDATE TestTable SET Fam=Fam+1"
.CommitTrans
.CommitTrans
Exit Sub
End With
Exit_h:
cnn.RollbackTrans
Версия Акса: XP SP2
Версия MDAC: 2.6
paparome
Дата: 01.06.2004 11:18:54
Где ошибка?
И чем вам такой вариант не угодил?
UPDATE TestTable SET Name=Name+1, Fam = Fam + 1 |
|
Senin Viktor
Дата: 01.06.2004 11:20:08
АлексейК
Дата: 01.06.2004 11:24:49
кажись так надо
cnn.open CurrentProject.Connection.connectionstring
SergeyKa
Дата: 01.06.2004 11:30:37
Тьфу ты ... про ошибку то и забыл
Cannot atart more transaction on this session
2paparome
а вот та мне именно захотелось - разбить на две транзакции
да и вообще. Вопрос принципиальный может ADO выполнить вложеннкю транзакцию своими средствами или надо делать так
Dim cnn as New Connection
cnn.Open "Provider=SQLOLEDB;Data Source=YOU;Initial Catalog=Test","sa"
With cnn
.Execute "BEGIN TRAN"
.Execute "UPDATE TestTable SET Name=Name+1"
.Execute "BEGIN TRAN"
.Execute "UPDATE TestTable SET Fam=Fam+1"
.Execute "COMMIT TRAN"
.Execute "COMMIT TRAN"
Exit Sub
End With
Exit_h:
cnn.Execute "ROLLBACK TRAN"
paparome
Дата: 01.06.2004 11:31:10
А вот так делать не надо :)
У серера нет вложенных транзакций
Уж лучше ХП написать :)
SergeyKa
Дата: 01.06.2004 11:36:31
2paparome
кстати говоря, вариант с BEGIN TRAN-COMMIT TRAN работат безупречно и
вообще как это так у MSSQL сервера нет вложенных транзакций их там до восьми штук вообщето если мне память не изменяет (((
ХП - это конечно хорошо, но всё таки - допускает ADO это или нет ?
Senin Viktor
Дата: 01.06.2004 11:38:14
Вопрос принципиальный может ADO выполнить вложеннкю транзакцию своими средствами и что это значит - собственными средствами? Это как?
а средствами адо
For providers that support nested transactions, calling the BeginTrans
method within an open transaction starts a new, nested transaction. The return
value indicates the level of nesting: a return value of "1" indicates you have
opened a top-level transaction (that is, the transaction is not nested within
another transaction), "2" indicates that you have opened a second-level
transaction (a transaction nested within a top-level transaction), and so forth.
|
|
2paparome
У серера нет вложенных транзакцийну да?
mk:@MSITStore:C:\Program%20Files\Microsoft%20SQL%20Server\80\Tools\Books\acdata.chm::/ac_8_md_06_66nq.htm