ADO Recordset блокирует таблицу, а нужно запись.
От: Pantalone  
Дата: 24.03.04 13:41
Оценка:
Dim cnnAccess As New ADODB.Connection

Dim rst As New ADODB.Recordset
Dim sql As String

cnnAccess.CursorLocation = adUseClient
cnnAccess.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=C:\biblio.mdb;"

cnnAccess.BeginTrans


    sql = "SELECT * FROM Authors Where Author = '1'"
    
    rst.Open sql, cnnAccess, adOpenKeyset, adLockOptimistic
    
    With rst
        .AddNew
            !Author = "Name"
        .Update
        ' тут останавливаемся и пытаемся в базе поредактировать все записи.
    End With
    
    rst.Close
    Set rst = Nothing


cnnAccess.CommitTrans

cnnAccess.Close
Set cnnAccess = Nothing


После Update таблица становится недоступна для изменений другим пользоателем, даже после rst.close и Set rst = Nothing
Только когда из программый выйдешь то все ок.

Все добавления делаются в транзакции, так что не понятно зачем блокируется таблица целиком? Ведь добавляемую в транзакции запись не видно, ее никто не изменит. Как отключить блокировку?

Точнее блокируется не вся таблица, а некоторая ее часть (называется страница?). Как бы добиться блокировки только одной записи.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.