Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
30.09.2021, 21:25
|
|||
---|---|---|---|
|
|||
подскажите решение - несколько пользователей работают с шедулером - как обновить у всех |
|||
#18+
Есть шедулер TcxScheduler, он завязан на базу FB 3.0. В шедулер могут вписывать события разные юзеры - как красиво обновлять календарную сетку при внесении изменений другим пользователем? вариант 1. - по таймеру рефрешим датасет, но тогда проблема - пользователь может уже что-то редактировать, рефреш собьет ему работу. вариант 2 - поджечь Notify средствами БД и по триггеру на обновление шлем нотифай и ловим его в программе у всех клиентах, но опять-таки, они могут в этот момент уже редактировать событие и рефреш датасета сбросит набранные изменения. вариант 3- делать ручную блокировку записи - делаем допполе, куда при открытии окна редактирования записать кто и когда заблочил запись. Тогда перед редактированием проверяем - никто туда не вписался. Если вписался - выводим сообщение с записанным текстом, чтоб пользователь знал, кто заблочил и уже потом разбирался организационно. Но вот если кто-то заблочил и произошла ошибка и блок не снялся и будет висеть. Конечно это все можно разрулить, но это лишние телодвижения. Может, есть какие-то более красивые решения? про селект with lock в курсе, но в бою не пробовал и боюсь будут эксепшены, а не хотелось бы, и шедулер не умеет селектить с блоком. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.09.2021, 21:33
|
|||
---|---|---|---|
подскажите решение - несколько пользователей работают с шедулером - как обновить у всех |
|||
#18+
Обновлять кроме текущей записи, которая редактируется. При попытке сохранения -- сообщать, что запись за время редактирования уже была изменена, и спрашивать подтверждения о том, что те данные могут быть перезаписаны. Изменение данных можно контролировать по доп полю с последней датой изменения записи (сверять с той, что была получена в последний раз на клиенте). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.09.2021, 21:43
|
|||
---|---|---|---|
|
|||
подскажите решение - несколько пользователей работают с шедулером - как обновить у всех |
|||
#18+
GrigoriyFomin ...FB 3.0... Подписаться на событие "Данные изменились", по получении - энейблить кнопку "Обновить". Если юзер хочет - жмёт кнопку в удобный ему момент . Ничего не блокировать, ибо если кто-то редактирует ту же самую запись - это проблема не техническая, а административная. Точно также дурак может испортить запись после её разблокировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.09.2021, 21:55
|
|||
---|---|---|---|
подскажите решение - несколько пользователей работают с шедулером - как обновить у всех |
|||
#18+
GrigoriyFomin в бою не пробовал и боюсь будут эксепшены Основная проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.09.2021, 23:16
|
|||
---|---|---|---|
|
|||
подскажите решение - несколько пользователей работают с шедулером - как обновить у всех |
|||
#18+
wadman GrigoriyFomin в бою не пробовал и боюсь будут эксепшены Основная проблема. просто по опыту использования подписки на эвенты в DataSnap - они могли пропадать при переконнекте или еще каких ситуациях с коннектом, вообщем, вещь ненадежная. Ожидаю, что будут тоже проблемы в боевых условиях ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.09.2021, 23:18
|
|||
---|---|---|---|
|
|||
подскажите решение - несколько пользователей работают с шедулером - как обновить у всех |
|||
#18+
ъъъъъ GrigoriyFomin ...FB 3.0... Подписаться на событие "Данные изменились", по получении - энейблить кнопку "Обновить". Если юзер хочет - жмёт кнопку в удобный ему момент . Ничего не блокировать, ибо если кто-то редактирует ту же самую запись - это проблема не техническая, а административная. Точно также дурак может испортить запись после её разблокировки. пользователи - тети после бальзаковского возраста - им сама программа уже сахар подняла многократно, кнопку точно жать не будут, им надо принудительно обновлять календарь с событиями, но так, чтоб выделение и редактирование не пропало.. Можно конечно раз в минуту по таймеру рефреш делать, но они могут в это время что-то уже внести.... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.09.2021, 23:52
|
|||
---|---|---|---|
|
|||
подскажите решение - несколько пользователей работают с шедулером - как обновить у всех |
|||
#18+
Заведите таблицу куда скидывайте информацию после обновления что для таких то пользователей необходимо обновить Sheduler. А у пользователя мониторьте эту таблицу. После обновления у пользователя, удаляете запись в таблице для этого пользователя. что то в этом роде. И не придется дергать большие таблицы, и рефрешить впустую по таймеру ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.09.2021, 23:53
|
|||
---|---|---|---|
|
|||
подскажите решение - несколько пользователей работают с шедулером - как обновить у всех |
|||
#18+
GrigoriyFomin ... пользователи - тети после бальзаковского возраста... 30-40 лет? GrigoriyFomin ...кнопку точно жать не будут, им надо принудительно обновлять календарь с событиями, но так, чтоб выделение и редактирование не пропало.. Можно конечно раз в минуту по таймеру рефреш делать, но они могут в это время что-то уже внести.... Вариантов у тебя нет, с данным контролом беспроблемно можно обновить данные только тогда, когда пользователь готов их обновить. Если ввод не завершен, то обновление вызовет потерю введенного фрагмента данных. Стало быть, ты должен 1. либо переложить ответственность на обновление на пользователя (1-2 раза потеряет данные - научится), 2. либо отслеживать режим редактирования (это просто). Второй вариант чреват возможностью перехода в режим вечного ожидания (пользователь ввёл одну букву и задумался). ... 3. У меня DevEx старые, отсутствует TcxScheduler, т.е. дальше лишь предположения. Итак, возможно, данный компонент умеет работать с кастомным датасетом, который можно менять в любой момент и так и тогда, когда захочет левая пятка. Я - о provider mode. Если такое возможно, то вы запросто можете менять отображаемые данные в любой момент, любой элемент. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=58&tablet=1&tid=2036990]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 149ms |
0 / 0 |