Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Работа в сети / 11 сообщений из 11, страница 1 из 1
12.07.2005, 12:01:01
    #33160921
Tassadar77
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа в сети
Первый раз пишу программу под сеть, и вот возник вопрос как обрабатывать ситуацию когда два пользователя работают с одной таблицей и например один из них удалил запись, как отследить этот момент и обновить данные на форме у другого?
...
Рейтинг: 0 / 0
12.07.2005, 12:54:32
    #33161146
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа в сети
Тема обширная и неоднократно обсуждаемая. Идем и ищим.
А также читаем про блокивоки и команды и функции RLock()/Lock(), FLock(), UNLOCK, Delete()
Или про буфферизацию и функции CURSORSETPROP(), TableUpdate(), TableRevert(), OldVal(), CurVal()
...
Рейтинг: 0 / 0
12.07.2005, 13:32:39
    #33161276
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа в сети
Если вкратце:
Ставим на табличку 5-й тип буферизации (оптимистическая табличная. Оптимистическая чтобы другим не мешать, табличная так как более управляемая)
Редактируем запись.
Проверяем не удалена ли запись - Deleted(). Если удалена сообщаем пользователю откатываем изменения. Проверяем не редактировал ли ее другой юзер (функция CurVal()). Если редактировал - выдаем сообщение и решаем что делать - либо прекратить редактировать - тогда откатываем все изменения функцией TableRevert(), либо перекрываем своими - делаем сброс буфера TableUpdate().
Если никто запись не менял то просто сбрасываем буфер. Если TableUpdate вернул .f., откатываем изменения обратно и выдаем пользователю причину.
...
Рейтинг: 0 / 0
12.07.2005, 13:50:25
    #33161351
Tassadar77
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа в сети
А можно ли без уведомления пользователя о том, что запись удалена. Например через таймер делать Requery()?
...
Рейтинг: 0 / 0
12.07.2005, 13:50:47
    #33161354
Tassadar77
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа в сети
И как сильно это загрузит сеть?
...
Рейтинг: 0 / 0
12.07.2005, 15:16:42
    #33161632
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа в сети
>А можно ли без уведомления пользователя о том, что запись удалена
Можно все, педложена просто схема. Я обычно на удаление не проверяю - успешный TableUpdate() в удаленую запись просто обновит твой буфер и удаленая строка пропадет. И при изменении другим пользователем тоже можно ничего не спрашивать - просто перекрывать своей инфой и все - кто последний тот и прав. Тут надо смотреть как надо пользователям.

>Например через таймер делать Requery()?
В случае буфферизации делать Requery() не надо - буфер автоматически обновляется по TableUpdate() и TableRevert(). В общем случае наверно можно, но я не встречал задачи в которой ситуация пока один юзер корректирует запись другой ее удалил встречалась бы часто.

Requery() надо делать при третьем стиле работы - всю рабочую информацию мы редактируем через представления. Тут конечно можно и по таймеру обновлять, но после многочисленых баталий выбор большинства сделать специальную кнопку и обновлять по ее нажати.

>И как сильно это загрузит сеть?
Зависит от оптимизации представлений
...
Рейтинг: 0 / 0
12.07.2005, 15:29:31
    #33161656
Tassadar77
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа в сети
Вопрос наверное глупый, но все таки, возможно ли создавать представления для таблиц не входящих в БД (свободных)? Просто в данный момент весь интерфейс построен на фильтрах.
...
Рейтинг: 0 / 0
12.07.2005, 16:11:43
    #33161766
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа в сети
Можно
...
Рейтинг: 0 / 0
12.07.2005, 16:36:09
    #33161833
Tassadar77
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа в сети
А как?)
...
Рейтинг: 0 / 0
12.07.2005, 20:52:20
    #33162306
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа в сети
Укажи в качестве источника представления свободную таблицу. Для хранения самого представления тебе конечно потребуется контейнер DBC, а для источника нет
...
Рейтинг: 0 / 0
13.07.2005, 13:25:22
    #33163324
Tassadar77
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа в сети
Спасибо за ответы.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Работа в сети / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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