On-line: Haz, гостей 3. Всего: 4 [подробнее..]
АвторСообщение



Пост N: 32
Зарегистрирован: 25.10.13
ссылка на сообщение  Отправлено: 05.11.13 16:15. Заголовок: hbrowse при совместном использовании


Использую базу SHARED
Такая проблема нарисовалась:
Если один пользователь исправил запись в HBrowse и даже ушел с неё (стрелочками) запись всё-равно остается заблокированной и другой пользователь не может её редактировать - при update выскакивает сообщение "Can`t lock the record"

В частности это проблема проявляется и в dbchw (от которой есть исходники). Если открыть одну и ту же базу в разных областях, то изменив запись в одном окне и сдвинувшись с неё, в другом окне эту запись не изменить...

Есть советы, а лучше примеры , как бороться... ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 9 [только новые]


постоянный участник


Пост N: 404
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 05.11.13 16:29. Заголовок: Ну кто же для тебя б..


Ну кто же для тебя будет примеры придумывать, сам выложи самодостаточный пример.
Каждый способ имеет недостатки. Я делаю так: запись блокируется только на мгновенье внесения изменения.
Два пользователя теоретически могут открыть одну запись для изменения не мешая друг другу, сохраняться изменения, которые сделает - последний.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 979
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 05.11.13 16:41. Заголовок: vladru пишет: Если ..


vladru пишет:

 цитата:
Если один пользователь исправил запись в HBrowse и даже ушел с неё (стрелочками) запись всё-равно остается заблокированной и другой пользователь не может её редактировать

dbUnlock() делаете?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 33
Зарегистрирован: 25.10.13
ссылка на сообщение  Отправлено: 05.11.13 16:58. Заголовок: AlexMyr нет не дела..


AlexMyr
нет не делаю, а где его делать ?
(Я же сам не контролирую редактирование и перемещение по browse...)

ИХМО надо добавить UNLOCK после 1847 строки в hbrowse.prg (в исходниках hwgui-2.18), но не лезть же туда своими грязными руками...

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 980
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 05.11.13 17:27. Заголовок: vladru пишет: нет н..


vladru пишет:

 цитата:
нет не делаю, а где его делать ?
(Я же сам не контролирую редактирование и перемещение по browse...)


Как это не контролируете? Смотрите пример hwgui\samples\browse_1.prg конструкцию ON POSCHANGE {||...

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 34
Зарегистрирован: 25.10.13
ссылка на сообщение  Отправлено: 05.11.13 17:49. Заголовок: AlexMyr Я не точно ..


AlexMyr
Я не точно выразился... Я не хотел бы контролировать. Полагаю что это (unlock) должен делать browse если запись менялась и была залочена.
Ну не делать же Unlock после каждого перемещения....
Пример конечно посмотрю еще разок.

Я всё-же залез грязными руками в hbrowse.prg и добавил после 1847 строки:
( ::alias ) -> ( dbUnLock() )
Мой пример стал работать корректно. Но это конечно не выход.
Вот ищу какой метод browse вызывается ПОСЛЕ редактирования записи.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 981
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 05.11.13 17:57. Заголовок: vladru пишет: Полаг..


vladru пишет:

 цитата:
Полагаю что это (unlock) должен делать browse если запись менялась и была залочена.

Что тогда должен делать и контролировать програмер? А если надо чтоб было залочено десятки записей, а browse их сразу разлочивает? Откуда любому контролу знать что вам надо в конкретной ситуации?

Спасибо: 1 
ПрофильЦитата Ответить



Пост N: 982
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 05.11.13 18:00. Заголовок: vladru пишет: Я всё..


vladru пишет:

 цитата:
Я всё-же залез грязными руками в hbrowse.prg и добавил после 1847 строки:
( ::alias ) -> ( dbUnLock() )

А если в browse поля из разных баз, что тогда в данном случае?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 35
Зарегистрирован: 25.10.13
ссылка на сообщение  Отправлено: 05.11.13 18:02. Заголовок: AlexMyr Согласен. Я..


AlexMyr
Согласен. Я не посмотрел что dbUnlock все блокировки снимает, а надо только с текущей записи снять...
Ну и вообще я понимаю что мне в библиотеку лезть не надо... Просто убедился что запись в этом месте блокируется, а блокировка потом не снимается....

Наверно правильным будет определить в своей проге bUpdate и в нем уже разбираться с блокировками.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 709
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 12.11.13 14:05. Заголовок: AlexMyr пишет: А ес..


AlexMyr пишет:

 цитата:
А если надо чтоб было залочено десятки записей, а browse их сразу разлочивает?


DbrUnlock( nRecNumber ), вроде, одну указанную запись разблокирует - надо будет эту функцию вставить.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 391
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет