|
Как можно определить, открыта ли форма у какого либо пользователя?
|
|||
---|---|---|---|
#18+
Приветствую всех! Есть разделенная многопользовательская бд. Можно ли определить, что конкретная форма открыта кем то из пользователей на своем компе? Дело в том, что есть одна сложная форма и если она открыта у одного юзера и в это время ее открывает второй, то у второго аксесс виснет почему то. Если можно как-то определить, что форма уже кем-то открыта, то хочу выдавать об этом сообщение и отменять второе открытие. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 19:15 |
|
Как можно определить, открыта ли форма у какого либо пользователя?
|
|||
---|---|---|---|
#18+
. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 19:49 |
|
Как можно определить, открыта ли форма у какого либо пользователя?
|
|||
---|---|---|---|
#18+
wladimirrr, Добавьте таблицу аля блокировки объектов. Как кто то пытается открыть форму, сначала проверим не взял ли кто блокировку ранее, если объект свободен вставляем свою запись. При закрытии формы запись-блокировку удаляем. Для того что бы не повесить работу в случае не штатного закрытия, в форме по таймеру обновляем запись. При этом при проверке на блокировку нужно проверить не только наличие записи, но и не "сгорела" ли она ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 20:44 |
|
Как можно определить, открыта ли форма у какого либо пользователя?
|
|||
---|---|---|---|
#18+
Swa111, что Вы имеете в виду "сгорела"? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 20:50 |
|
Как можно определить, открыта ли форма у какого либо пользователя?
|
|||
---|---|---|---|
#18+
wladimirrr, на псевдо коде примерно так Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
Либо другой вариант (правда не уверен что сработает в Access) создать таблицу с всеми объектами которые можно блокировать. в момент открытия формы открывать транзакцию и пытаться обновить запись. По окончанию работ с объектом закрывать транзакцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 21:20 |
|
Как можно определить, открыта ли форма у какого либо пользователя?
|
|||
---|---|---|---|
#18+
Swa111, интересно, но мало что понял(. А на VBA? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 21:31 |
|
Как можно определить, открыта ли форма у какого либо пользователя?
|
|||
---|---|---|---|
#18+
wladimirrr Swa111, что Вы имеете в виду "сгорела"? ну он имел наверно ввиду, что форма которая открылась первой пишет туда например каждую минуту какую то фигню... а вторая форма при старте проверяет время записи последней фигни, если текущее время на компе больше времени записи последней фигни более чем на минуту - значит фигню уже никто не пишет, можно стартовать и писать туда свою фигню каждую минуту... В принципе вариант, только нужно учитывать не голое время, а и часы и день, ибо последний сеанс мог быть и час и день и неделю назад, да и время на компах может не совпадать - тогда почти тупик... правильнее разобраться почему сетевое приложение не работает как сетевое... Ну или такой костыль - отдельную пустую таблицу делаем в отдельном сетевом mdb и пристегиваем её к скрытому списку формы, при старте формы рядом с mdb появится такой же ldb... при старте формы проверяем наличие ldb: - если его нет, то открываем форму и работаем... - если он есть, пробуем его удалить (Kill), если удалился, запускаем форму и работаем - если на Kill получаем ошибку, значит кто-то работает, выдаем сообщение и не открываем форму... имхо так меньше гимора с таймерами, датами и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 21:39 |
|
Как можно определить, открыта ли форма у какого либо пользователя?
|
|||
---|---|---|---|
#18+
vmag, еще вариант на сетевой шаре создавать текстовый файл и держать его открытым пока работаешь с формой ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 21:56 |
|
Как можно определить, открыта ли форма у какого либо пользователя?
|
|||
---|---|---|---|
#18+
vmag при старте формы проверяем наличие ldb: - если его нет, то открываем форму и работаем... - если он есть, пробуем его удалить (Kill), если удалился, запускаем форму и работаем - если на Kill получаем ошибку, значит кто-то работает, выдаем сообщение и не открываем форму... имхо так меньше гимора с таймерами, датами и т.д. Спасибо за идею! Если не трудно, примерный код на VBA набросайте. Я не очень силен в этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 21:59 |
|
Как можно определить, открыта ли форма у какого либо пользователя?
|
|||
---|---|---|---|
#18+
wladimirrr ...Если не трудно, примерный код на VBA набросайте... ...ну да, вот щас всё брошу и буду вешать скворечник... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 22:08 |
|
Как можно определить, открыта ли форма у какого либо пользователя?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 01:46 |
|
Как можно определить, открыта ли форма у какого либо пользователя?
|
|||
---|---|---|---|
#18+
ПыСы: wladimirrr если она открыта у одного юзера и в это время ее открывает второй, то у второго аксесс виснет почему то ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 02:00 |
|
Как можно определить, открыта ли форма у какого либо пользователя?
|
|||
---|---|---|---|
#18+
wladimirrr Есть разделенная многопользовательская бд. есть одна сложная форма и если она открыта у одного юзера и в это время ее открывает второй, то у второго аксесс виснет ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 09:29 |
|
Как можно определить, открыта ли форма у какого либо пользователя?
|
|||
---|---|---|---|
#18+
Кривцов Анатолий Есть подозрение, что ваша многопользовательская бд не разделена на таблицы и интерфейс с формами и прочим у каждого юзера, т.е. всё в одном флаконе. Если так, то здесь и собака порылась. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 10:30 |
|
Как можно определить, открыта ли форма у какого либо пользователя?
|
|||
---|---|---|---|
#18+
Кривцов Анатолий wladimirrr Есть разделенная многопользовательская бд. есть одна сложная форма и если она открыта у одного юзера и в это время ее открывает второй, то у второго аксесс виснет База разделена, таблицы находятся на сервере, интерфейсы у юзеров на ПК. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 17:46 |
|
Как можно определить, открыта ли форма у какого либо пользователя?
|
|||
---|---|---|---|
#18+
sdku ПыСы: wladimirrr если она открыта у одного юзера и в это время ее открывает второй, то у второго аксесс виснет почему то Ищу, читаю. Ошибки не постоянные. То есть, то все нормально. Может связано с сетью и сервером. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 17:48 |
|
Как можно определить, открыта ли форма у какого либо пользователя?
|
|||
---|---|---|---|
#18+
wladimirrr, Самая распространенная и очень трудно диагностируемая неисправность в электронике-отсутствие контакта там где он нужен и его присутствие там где он не нужен ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 19:08 |
|
Как можно определить, открыта ли форма у какого либо пользователя?
|
|||
---|---|---|---|
#18+
Код: sql 1.
Жесть какаято :) 1. В таблицу вносится N статичных записей (один раз ручками) 2. Алгоритм (цикл N) на каждую из N записей пытается наложить монопольную блокировку; 3. Если блокировка наложена, то в эту запись update-set пишет идентификатор владельца блокировки. 4. Если записи кончились, выводим сообщение "с формой уже работают N пользователей, ждите как освободится хоть один слот" (и можно циклом по N записям заодно собрать и вывести справочно заблокировавших из п.3) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 15:32 |
|
|
start [/forum/topic.php?fid=45&fpage=14&tid=1609988]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 289ms |
total: | 427ms |
0 / 0 |