Транзакции

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

Гость
#1
База ацевская, подключаюсь через DAO. Как сделать чтобы несколько пользователей могли изменять определенную запись.
Попробовал сделать одновременное обращение к базе на изменение (запускал два экзешника и пока первый не закончил работу обращался к базе из второго)
Второй экзешник ругается: "Обновление невозможно; блокировка установлена пользователем <имя> на машине <имя>. (Ошибка 3260)"
Мне нужно чтобы изменения вызванные вторым экзешником тоже учитывались. Вроде бы нужно в таких ситуациях применять транзакции (а может и нет), но я признаюсь - в них не шарю .
Подскажите пожалуйста как быть, буду признателен за пример кода.
Вот код проекта, который я дважды запускал на исполнение:

Visual Basic:

Код:
Private Sub Command1_Click() 
ProgressBar1.Min = 1 
ProgressBar1.Max = 10000 
ProgressBar1.Visible = True 
On Error GoTo errhndl 
Set db = OpenDatabase(App.Path + "\" + "mmm.mdb", False) 
Set rs = db.OpenRecordset("обращений") 
rs.MoveFirst 
For i = 1 To 10000 
rs.Edit 
f = rs("раз") 
rs("раз") = f + CInt(i) 
ProgressBar1.Value = i 
DoEvents 
rs.Update 
Next i 
rs.Close 
db.Close 
ProgressBar1.Visible = False 
exit sub 
errhndl: 
MsgBox (Err.Number) 
End Sub
 
B

Barmutik

Гость
#2
Транзакции тут не совсем к месту...

На самом деле это большая проблема - одна из её ветвей потерянные обновления: Например пользователь 1 и 2 обратились к записи в состоянии 1. Потом пользователь 1 изменил запись и перевёл её в состояние 2, после этого пользователь 2 изменил запись и перевёл её в состояние 3. В результате изменения внесённые пользователем 1 были утеряны.

Насколько мне известно MS Access не предоставлет механизма одновременного редактирования одной записи несколькими пользователями. Если Вам это требуется то нужный механизм следует реализовывать на уровне приложения.
 
Статус
Закрыто для дальнейших ответов.