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

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

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

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

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

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

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

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

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

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

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

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


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