• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Транзакции

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

Guest

База ацевская, подключаюсь через 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

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

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!