Автор | Сообщение |
|
| |
Пост N: 32
Зарегистрирован: 25.10.13
|
|
Отправлено: 05.11.13 16:15. Заголовок: hbrowse при совместном использовании
Использую базу SHARED Такая проблема нарисовалась: Если один пользователь исправил запись в HBrowse и даже ушел с неё (стрелочками) запись всё-равно остается заблокированной и другой пользователь не может её редактировать - при update выскакивает сообщение "Can`t lock the record" В частности это проблема проявляется и в dbchw (от которой есть исходники). Если открыть одну и ту же базу в разных областях, то изменив запись в одном окне и сдвинувшись с неё, в другом окне эту запись не изменить... Есть советы, а лучше примеры , как бороться... ?
|
|
|
Новых ответов нет
[см. все]
|
|
|
| постоянный участник
|
Пост N: 404
Зарегистрирован: 13.10.05
|
|
Отправлено: 05.11.13 16:29. Заголовок: Ну кто же для тебя б..
Ну кто же для тебя будет примеры придумывать, сам выложи самодостаточный пример. Каждый способ имеет недостатки. Я делаю так: запись блокируется только на мгновенье внесения изменения. Два пользователя теоретически могут открыть одну запись для изменения не мешая друг другу, сохраняться изменения, которые сделает - последний.
|
|
|
|
| |
Пост N: 979
Зарегистрирован: 11.06.10
|
|
Отправлено: 05.11.13 16:41. Заголовок: vladru пишет: Если ..
vladru пишет: цитата: | Если один пользователь исправил запись в HBrowse и даже ушел с неё (стрелочками) запись всё-равно остается заблокированной и другой пользователь не может её редактировать |
|
dbUnlock() делаете?
|
|
|
|
| |
Пост N: 33
Зарегистрирован: 25.10.13
|
|
Отправлено: 05.11.13 16:58. Заголовок: AlexMyr нет не дела..
AlexMyr нет не делаю, а где его делать ? (Я же сам не контролирую редактирование и перемещение по browse...) ИХМО надо добавить UNLOCK после 1847 строки в hbrowse.prg (в исходниках hwgui-2.18), но не лезть же туда своими грязными руками...
|
|
|
|
| |
Пост N: 980
Зарегистрирован: 11.06.10
|
|
Отправлено: 05.11.13 17:27. Заголовок: vladru пишет: нет н..
vladru пишет: цитата: | нет не делаю, а где его делать ? (Я же сам не контролирую редактирование и перемещение по browse...) |
| Как это не контролируете? Смотрите пример hwgui\samples\browse_1.prg конструкцию ON POSCHANGE {||...
|
|
|
|
| |
Пост N: 34
Зарегистрирован: 25.10.13
|
|
Отправлено: 05.11.13 17:49. Заголовок: AlexMyr Я не точно ..
AlexMyr Я не точно выразился... Я не хотел бы контролировать. Полагаю что это (unlock) должен делать browse если запись менялась и была залочена. Ну не делать же Unlock после каждого перемещения.... Пример конечно посмотрю еще разок. Я всё-же залез грязными руками в hbrowse.prg и добавил после 1847 строки: ( ::alias ) -> ( dbUnLock() ) Мой пример стал работать корректно. Но это конечно не выход. Вот ищу какой метод browse вызывается ПОСЛЕ редактирования записи.
|
|
|
|
| |
Пост N: 981
Зарегистрирован: 11.06.10
|
|
Отправлено: 05.11.13 17:57. Заголовок: vladru пишет: Полаг..
vladru пишет: цитата: | Полагаю что это (unlock) должен делать browse если запись менялась и была залочена. |
|
Что тогда должен делать и контролировать програмер? А если надо чтоб было залочено десятки записей, а browse их сразу разлочивает? Откуда любому контролу знать что вам надо в конкретной ситуации?
|
|
|
|
| |
Пост N: 982
Зарегистрирован: 11.06.10
|
|
Отправлено: 05.11.13 18:00. Заголовок: vladru пишет: Я всё..
vladru пишет: цитата: | Я всё-же залез грязными руками в hbrowse.prg и добавил после 1847 строки: ( ::alias ) -> ( dbUnLock() ) |
|
А если в browse поля из разных баз, что тогда в данном случае?
|
|
|
|
| |
Пост N: 35
Зарегистрирован: 25.10.13
|
|
Отправлено: 05.11.13 18:02. Заголовок: AlexMyr Согласен. Я..
AlexMyr Согласен. Я не посмотрел что dbUnlock все блокировки снимает, а надо только с текущей записи снять... Ну и вообще я понимаю что мне в библиотеку лезть не надо... Просто убедился что запись в этом месте блокируется, а блокировка потом не снимается.... Наверно правильным будет определить в своей проге bUpdate и в нем уже разбираться с блокировками.
|
|
|
|
| moderator
|
Пост N: 709
Зарегистрирован: 06.07.06
|
|
Отправлено: 12.11.13 14:05. Заголовок: AlexMyr пишет: А ес..
AlexMyr пишет: цитата: | А если надо чтоб было залочено десятки записей, а browse их сразу разлочивает? |
| DbrUnlock( nRecNumber ), вроде, одну указанную запись разблокирует - надо будет эту функцию вставить.
|
|
|
|