|
|
|
Согласованность клиентов
|
|||
|---|---|---|---|
|
#18+
Мучаюсь таким вопросом: есть база, есть клиент. пишу в VB.net, соединяюсь с базой Access через oleDb. Пусть Клиент1 начал работу и закачал себе в DataSet таблицу. Клиент2 начал работу и изменил запись, затем обновил ее на сервере. Вопрос: как Клиент1 узнает об изменении, если он работает с отсоединенным набором данных? Варианты решения которые приходят на ум: - При каждом переходе по записям обновлять текущую запись из базы - При изменении на сервере ставить флаг-Изменено, а на переходах по записям Клиента проверять этот флаг. Если true, то обновить запись - Обновлять базу раз в некую единицу времени. Подскажите, как эта задача решается обычно? Спасибо всем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2003, 12:56 |
|
||
|
Согласованность клиентов
|
|||
|---|---|---|---|
|
#18+
флагом здесь не обойдешься нужно привязываться к уникальному полю таблицы и полю типа штамп времени и проверять соответствие значений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2003, 14:22 |
|
||
|
Согласованность клиентов
|
|||
|---|---|---|---|
|
#18+
Вообще-то по всем правилам при начале редактирования записи ты должен сначало ее заблокировать , а при окончании снять эту блокировку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2003, 18:20 |
|
||
|
Согласованность клиентов
|
|||
|---|---|---|---|
|
#18+
если накладывать исключительную блокировку для данных формы - то сервак дагнется от взаимных блокировок, все запросы к таблице от других пользователей либо зависнут в ожидании , либо выдадут не все сведения в зависимости от хинтов --------------------------------------------------------------- исключительная блокировка осуществляется только на момент сохранения записи --------------------------------------------------------------- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2003, 18:29 |
|
||
|
Согласованность клиентов
|
|||
|---|---|---|---|
|
#18+
Можно создать специальную таблицу для блокировок (структура что-то типо этого NameTable, RowID, IDUser). При начале редктирования смотрим в этой таблице редактирует уже кто-нибудь эту запись, и если нет то все ОК добавляем запись в таблицу блокировок что мы начали ее редактировать, ну а в противном случае (если запись заблокирована) сообщам Userу что запись редактируется тем-то. Единственная проблема при аварийном отключении от базы данных зависшие записи в таблице блокировок :-(. Вот если бы можно было узнать подключен ли User базе данных тогда все встало бы по своим местам и всем бы было благо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2003, 20:44 |
|
||
|
Согласованность клиентов
|
|||
|---|---|---|---|
|
#18+
> Единственная проблема при аварийном отключении от базы данных зависшие записи в таблице блокировок :-(. Для решения этой проблемы можно предложить две примочки: 1. Если юзеру N мешает зависшая запись с тем же юзером N, то ее можно тут же уничтожить (либо с подтверждением, либо молча). 2. Каждый юзер должен иметь возможность видеть таблицу блокировок, а один особо привилегированный (или несколько) - стирать из нее записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2003, 23:00 |
|
||
|
Согласованность клиентов
|
|||
|---|---|---|---|
|
#18+
>1. Если юзеру N мешает зависшая запись с тем же юзером N, то ее можно тут же уничтожить (либо с подтверждением, либо молча). Полностью согласен. Удалять нужно молча, ибо редактировать запись одним Userом в двух местах это недоработка в проектировании БД. >2. Каждый юзер должен иметь возможность видеть таблицу блокировок, а один особо привилегированный (или несколько) - стирать из нее записи Про особо пригелированого пользователя это хорошо. А может быть можно спросить у ОС кто юзает этот файл? Надо подумать! Попробую покопать в системных таблицах. А что по этому поводу сказано у Гетца. Может кто знает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 09:26 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32186862&tid=1681007]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
47ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 325ms |

| 0 / 0 |
