﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Программирование / Visual Basic  / Access MDB - Как совместить в одной транзакции работу через Execute SQL и Recordset / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://www.relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Thu, 24 Jul 2008 08:44:15 GMT</lastBuildDate><ttl>20</ttl><item><title>Access MDB - Как совместить в одной транзакции работу через Execute SQL и Recordset</title><link>http://www.relib.com/forums/Topic915273-1-1.aspx</link><description>[code]&lt;br&gt;Public Function Trans_Test()&lt;br&gt;Dim Rs1 As ADODB.Recordset, CnnString As String, Cnn As ADODB.Connection, dbName As String&lt;br&gt;' Tbl1(*Id,fld1) , Tbl2(*Id,*fld1,fld2,fld3)&lt;br&gt;dbName = "C:\1\db1.mdb"&lt;br&gt;Set Cnn = New ADODB.Connection ' &amp; CurrentDb.Name&lt;br&gt;CnnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &amp; dbName &amp; _&lt;br&gt;            ";Mode=Share Deny None;Persist Security Info=False" ' ;Mode=Share Deny None&lt;br&gt;'Cnn.IsolationLevel = adXactReadCommitted ' adXactReadUncommitted,adXactReadCommitted(Default),adXactRepeatableRead,adXactSerializable&lt;br&gt;'Cnn.Mode = adModeShareDenyWrite  ' adModeUnknown adModeRead adModeWrite adModeReadWrite adModeShareDenyRead adModeShareDenyWrite adModeShareExclusive adModeShareDenyNone(Default)&lt;br&gt;'Cnn.CursorLocation = adUseServer ' adUseServer(Default) adUseClient&lt;br&gt;Cnn.Open CnnString ' Запись БЛОКИРУЕТСЯ !&lt;br&gt;Set Rs1 = New ADODB.Recordset&lt;br&gt;Rs1.Open Source:=" SELECT * FROM Tbl1 ", ActiveConnection:=Cnn, _&lt;br&gt;         CursorType:=adOpenKeyset, LockType:=adLockPessimistic ',Options:=adCmdText ' adLockOptimistic adLockPessimistic&lt;br&gt;Cnn.BeginTrans&lt;br&gt;Rs1.MoveFirst&lt;br&gt;Rs1!fld1 = -1  &lt;br&gt;' -2147467259  Обновление невозможно; установлена блокировка :&lt;br&gt;Cnn.Execute "UPDATE Tbl1 SET fld1 = -2 WHERE Id=1" [/code]&lt;br&gt;&lt;br&gt;Cnn.Execute не может после Rs1!fld1 = -1 выполнить в этой транзакции свою работу ?&lt;br&gt;Почему так ? Возможно ли это совместить в одной транзакции ?</description><pubDate>Fri, 10 Aug 2007 17:06:26 GMT</pubDate><dc:creator>kefi</dc:creator></item></channel></rss>