On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 6372
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.07.19 21:52. Заголовок: Блокировка записи в Dbf-файле


Всем привет !
Есть ли какие новые методы получения сведений о блокированных записей для DBF ?
Или всё что осталось с Клипера перешло в Харбор и нового ничего нет.
Я про ЛетоДБ знаю.

На клипере в своё время лет 20 назад делал блокировку записей через семафорные файлы.
Целая статья была в фирменном журнале Клипера.
Перетащил этот вариант в терминалку Харбора, до сих пор работает.

Теперь делаю на МиниГуи новую задачу, хотелось бы понять как дальше работать с обычным DBF.
Как можно сделать блокировку записи,
чтобы другой процесс определял бы это и мог выдавать какой юзер это сделал ?

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


администратор




Пост N: 7081
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.07.19 07:38. Заголовок: Andrey пишет: Перет..


Andrey пишет:

 цитата:
Перетащил этот вариант в терминалку Харбора, до сих пор работает.


Andrey пишет:

 цитата:
Теперь делаю на МиниГуи новую задачу


А какая разница для блокировок терминалка это или XXXGui ?

Функциям xxxLock() фиолетово какой у тебя вариант терминалка или нет.
Если нужен расширенный функционал , пиши самопал...думаю сложного тут
нет ни чего.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1544
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 30.07.19 09:11. Заголовок: Уточни, как именно д..


Уточни, как именно должно выглядеть "чтобы другой процесс определял бы это и мог выдавать какой юзер это сделал"?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6373
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.07.19 18:48. Заголовок: PSP пишет: Уточни, ..


PSP пишет:

 цитата:
Уточни, как именно должно выглядеть "чтобы другой процесс определял бы это и мог выдавать какой юзер это сделал"?


Примерно так:
Таблица, всё редактирование в таблице происходит ТОЛЬКО через карточку.
В этой карточке если запись не кем не занята, то юзер её может править.
Если карточка блокирована другим процессом, то должна появляться надпись:
Запись блокирована другим юзером: 1, 2, 3 и нет редактирования полей карточки.
Вот примерно так.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1545
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 30.07.19 20:00. Заголовок: Я бы сделал так: а)..


Я бы сделал так:
а) добавить в каждую таблицу поле LockByUser (имя поля - для примера), в котором будет храниться идентификатор пользователя, заблокировшего запись;
б) после успешной (dbRLock() == .T.) блокировки записи в это поле записывается идентификатор текущего пользователя (используем dbCommit());
в) по окончании редактирования записи, перед dbRUnLock(), поле LockByUser очищается, используем dbCommit() и производится разблокирование;
г) если попытка блокирования записи окончится неудачей (dbRLcok() == .F.), читаем поле LockByUser и выводим информацию о пользователе, который в настоящий момент занял запись.
Вроде всё...))

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




Пост N: 7082
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.07.19 22:04. Заголовок: Andrey пишет: Табли..


Andrey пишет:

 цитата:
Таблица, всё редактирование в таблице происходит ТОЛЬКО через карточку.
В этой карточке если запись не кем не занята, то юзер её может править.


Не знаю что там имеется в виду под карточкой , но у себя сделал так: если кто то
зашел в документ на редактирование (накладная например) , то блочу весь документ
пока юзер из него не выйдет , включая конечно проверку на возможность такой
блокировки и если она успешна то после её окончания блок снимаю. Месаги конечно
вешаю если документ заблочить не удаётся пишу и кто блокнул. Хранится всё это дело
в отдельной базе блокировок по видам документов.
Ранее без этого дела N-кол-во юзеров могло зайти в документ и править его

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



Пост N: 2700
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.07.19 23:29. Заголовок: Dima пишет то блочу ..


Dima пишет
 цитата:
то блочу весь документ
пока юзер из него не выйдет , включая конечно проверку на возможность такой
блокировки и если она успешна то после её окончания блок снимаю.


Использую механизм "владелец документа", т.е. кто создал тот может менять, другие, если определено, могут смотреть.
"Владельца" можно сменить, тогда он может менять, как правило это разделяется временными операциями.
Блокировки только при записи.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6374
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.07.19 06:55. Заголовок: Dima пишет: Не знаю..


Dima пишет:

 цитата:
Не знаю что там имеется в виду под карточкой


Примерно вот так:


Dima пишет:

 цитата:
Месаги конечно
вешаю если документ заблочить не удаётся пишу и кто блокнул. Хранится всё это дело
в отдельной базе блокировок по видам документов.


А если прога слетела у кого то, кто заблокировал документ - как тогда делаешь ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6409
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.08.19 12:48. Заголовок: PSP пишет: Я бы сде..


PSP пишет:

 цитата:
Я бы сделал так:


Вроде получилось как надо !
Пример в новом МиниГуи SAMPLES\Advanced\Tsb_Basic_2
Запускаем 2-3 экземпляра программы и получается то что нужно !

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

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