powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Согласованность клиентов
8 сообщений из 8, страница 1 из 1
Согласованность клиентов
    #32186365
AlexJS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мучаюсь таким вопросом:
есть база, есть клиент.
пишу в VB.net, соединяюсь с базой Access через oleDb.

Пусть Клиент1 начал работу и закачал себе в DataSet таблицу. Клиент2 начал работу и изменил запись, затем обновил ее на сервере. Вопрос: как Клиент1 узнает об изменении, если он работает с отсоединенным набором данных?

Варианты решения которые приходят на ум:
- При каждом переходе по записям обновлять текущую запись из базы
- При изменении на сервере ставить флаг-Изменено, а на переходах по записям Клиента проверять этот флаг. Если true, то обновить запись
- Обновлять базу раз в некую единицу времени.

Подскажите, как эта задача решается обычно?

Спасибо всем.
...
Рейтинг: 0 / 0
Согласованность клиентов
    #32186500
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
флагом здесь не обойдешься

нужно привязываться к уникальному полю таблицы и полю типа штамп времени и проверять соответствие значений
...
Рейтинг: 0 / 0
Согласованность клиентов
    #32186862
Вообще-то по всем правилам при начале редактирования записи ты должен сначало ее заблокировать , а при окончании снять эту блокировку.
...
Рейтинг: 0 / 0
Согласованность клиентов
    #32186869
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если накладывать исключительную блокировку для данных формы - то сервак дагнется от взаимных блокировок, все запросы к таблице от других пользователей либо зависнут в ожидании , либо выдадут не все сведения в зависимости от хинтов

---------------------------------------------------------------
исключительная блокировка осуществляется только на момент сохранения записи
---------------------------------------------------------------
...
Рейтинг: 0 / 0
Согласованность клиентов
    #32186908
Можно создать специальную таблицу для блокировок (структура что-то типо этого NameTable, RowID, IDUser). При начале редктирования смотрим в этой таблице редактирует уже кто-нибудь эту запись, и если нет то все ОК добавляем запись в таблицу блокировок что мы начали ее редактировать, ну а в противном случае (если запись заблокирована) сообщам Userу что запись редактируется тем-то. Единственная проблема при аварийном отключении от базы данных зависшие записи в таблице блокировок :-(. Вот если бы можно было узнать подключен ли User базе данных тогда все встало бы по своим местам и всем бы было благо!
...
Рейтинг: 0 / 0
Согласованность клиентов
    #32186943
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Единственная проблема при аварийном отключении от базы данных зависшие записи в таблице блокировок :-(.

Для решения этой проблемы можно предложить две примочки:

1. Если юзеру N мешает зависшая запись с тем же юзером N, то ее можно тут же уничтожить (либо с подтверждением, либо молча).

2. Каждый юзер должен иметь возможность видеть таблицу блокировок, а один особо привилегированный (или несколько) - стирать из нее записи.
...
Рейтинг: 0 / 0
Согласованность клиентов
    #32187059
>1. Если юзеру N мешает зависшая запись с тем же юзером N, то ее можно тут же уничтожить (либо с подтверждением, либо молча).
Полностью согласен. Удалять нужно молча, ибо редактировать запись одним Userом в двух местах это недоработка в проектировании БД.

>2. Каждый юзер должен иметь возможность видеть таблицу блокировок, а один особо привилегированный (или несколько) - стирать из нее записи

Про особо пригелированого пользователя это хорошо. А может быть можно спросить у ОС кто юзает этот файл? Надо подумать! Попробую покопать в системных таблицах. А что по этому поводу сказано у Гетца. Может кто знает?
...
Рейтинг: 0 / 0
Согласованность клиентов
    #32187234
Фотография progist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если БД в локальной сети - обновлять после каждого апдейта на клиенте
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Согласованность клиентов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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