• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Транзакции

  • Автор темы 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 не предоставлет механизма одновременного редактирования одной записи несколькими пользователями. Если Вам это требуется то нужный механизм следует реализовывать на уровне приложения.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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