powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Блокировка изменяемой записи в многопользовательском режиме
8 сообщений из 8, страница 1 из 1
Блокировка изменяемой записи в многопользовательском режиме
    #39273107
Фотография Rikozenit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня всем!
Подскажите пожалуйста, почему при включении в параметрах БД "Блокировки на уровне записей" по факту блокировка не работает.
База разделена, параметры БД выставлены и в файле с таблицами и в интерфейсных файлах.
С двух интерфейсных файлов пробую одновременно редактировать одну и ту же строку в базе - и Аксесс мне это позволяет. Ругается только при потере фокуса этой записи о возникшем конфликте в результате одновременного внесения изменений в одну и туже запись.
В чём тогда смысл этой опции?
...
Рейтинг: 0 / 0
Блокировка изменяемой записи в многопользовательском режиме
    #39273400
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rikozenit,

Для начала перезагрузить файл данных.
Для многих настроек нужно перезагружаться...
А вообще, по крайней мере я, стараюсь делать собственную блокировку(доп поле и при открытии на редактирование записываю в него id оператора. Потом при сохранении чищу). Условия работы не идеальные, но по мне лучше так, чем бороться с сообщением - "Пока вы правили запись, она была изменена другим оператором...." вроде так звучит
"Изменяемая запись" в аксе та еще штучка. На сколько знаю можно нарваться на блокировку и соседних строк, не смотря на то, что в настройках - только изменяемая запись. Можно по форуму поискать...
...
Рейтинг: 0 / 0
Блокировка изменяемой записи в многопользовательском режиме
    #39273523
Фотография Rikozenit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игортан,

я вот и думал, что благодаря блокировке, сообщение об одновременном изменении записи не будет, т.к. во время редактирования для остальных пользователей эта запись будет просто недоступна...

Можете рассказать, как записывать id оператора? (я ещё на начальном этапе изучения VBA).
Спасибо!
...
Рейтинг: 0 / 0
Блокировка изменяемой записи в многопользовательском режиме
    #39273652
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Блокировка изменяемой записи в многопользовательском режиме
    #39273862
Фотография Rikozenit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_world,

благодарю! Изучаю...
Но вообще, я тут понял, что меня больше даже устроит ОТСУТСТВИЕ БЛОКИРОВКИ. Ибо каждому юзеру через формы у меня предоставлен доступ только к определённым полям (общих - нет).
Я значится блокировку-то отключил! Но при одновременном редактировании разными юзерами через свои интерфейсы одной и той же записи, но разных полей, сообщение о конфликте всё равно появляется(((
Как избавиться от предупреждения? Пускай аксесс позволяет разным юзерам одновременно вносить инфу в разные поля одной и той же записи.
...
Рейтинг: 0 / 0
Блокировка изменяемой записи в многопользовательском режиме
    #39274096
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rikozenit,
Я вот сейчас точно не вспомню, почему не прижилось у меня. На самих формах есть свойство - Блокировка.
Так вот там тоже есть разный тип блокировки.
Когда я ее пробовал, давно правда, то при свойстве - Изменяемой записи, одну и туже запись можно открыть - НО НЕ РЕДАКТИРОВАТЬ. при попытке редактирования вторым оператором просто блокируется возможность ввода данных +звук сигнал. Для этого случая хорошо иметь открытой Область выделения.
Вот в ней сразу видно, что запрещено изменение.
Вот только не помню, есть ли проблемы с соседней строкой...

Я всегда в настройках акса ставлю - блокировка отсутствует.
Блокировки делаю при открытии формы на изменение.
В таблице поле делаю Busy. В него вставляю id оператора (оператор из своей таблицы не системный)
Типа вход в базу по паролю. После правильного введения логина пароля форму входа не закрываю а скрываю.
Всегда при необходимости выдергиваю от туда id вошедшего оператора. Запись в таблицу занятости и снятие занятости(в данном примере):
Код: vbnet
1.
CurrentProject.Connection.Execute ("UPDATE Processing SET Busy = 0 WHERE (((IdUser)=" & Forms!Password_entry!Id & ") AND ((Busy)=" & Forms!Password_entry!Id & "))")



Как то так
...
Рейтинг: 0 / 0
Блокировка изменяемой записи в многопользовательском режиме
    #39274098
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игортан,

Тут правда есть один существенный минус....
При аварийном закрытии базы, занятость не снимается.
При старте делаю прогон по таблицам и в "своей занятости" обнуляю ее.
Пример старый, другого под рукой нет(с работой только своих занятостей).
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
Public Sub RemoveClick()
Dim msg As String, Style As Integer, Title As String, Response As Integer
'Dim dbt As Database
Dim MyTbl As TableDef
Dim j As Long
Dim er As Long

   On Error GoTo Remove_Click_Error

er = 1
msg = "Пожалуйста, все пользователи должны выйти из базы данных, прежде чем продолжить!"
Style = vbYesNo + vbQuestion + vbDefaultButton2
Title = "Внимание!"

er = 2
Response = MsgBox(msg, Style, Title)
If Response = vbYes Then
er = 3
    DoCmd.Hourglass True
    For Each MyTbl In CurrentDb.TableDefs
        If (MyTbl.Attributes And dbSystemObject) = False Then
er = 4
            For j = 0 To CurrentDb.TableDefs(MyTbl.Name).Fields.count - 1
er = 5
                If CurrentDb.TableDefs(MyTbl.Name).Fields(j).Name = "Busy" Then
er = 6
'If MyTbl.Name = "TypeProcessing" Then Stop
                    CurrentProject.Connection.Execute ("UPDATE " & MyTbl.Name & " SET Busy = 0")
                    GoTo 1
                End If
            Next j
        End If
1:
    Next MyTbl
    MsgBox "Очистка прошла успешно.", , "Выполнение"
    DoCmd.Hourglass False
End If


   On Error GoTo 0
   Exit Sub

Remove_Click_Error:
    
    If er <> 0 Then
        MsgBox "Ошибка процесса (" & er & ")", , "Ошибка " & Err.Number & "!"
    Else
       MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure Remove_Click of Form_Settings"
    End If
    
End Sub
...
Рейтинг: 0 / 0
Блокировка изменяемой записи в многопользовательском режиме
    #39299664
Фотография Rikozenit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игортан,

спасибо, буду разбираться!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Блокировка изменяемой записи в многопользовательском режиме
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]