powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проверка блокировки
13 сообщений из 13, страница 1 из 1
Проверка блокировки
    #34151049
StandD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди, совсем затупил!

Как проверить, заблокирована ли запись? Проблема в том, что если использовать LOCK-RLOCK, то ФОКС пытается заблокировать строку и выдать результат блокировки. Но если запись уже заблокирована - комп подвисает и внизу маленькими строчками "запись заблокирована, нажмите ESC". Но это все не очень заметно для пользователя и довольно долго комп выходит из этой ситуации.
Есть ли возможность проверить блокировку строки БЕЗ попытки ее заблокировать?
...
Рейтинг: 0 / 0
Проверка блокировки
    #34151137
#
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
#
Гость
IsRlocked()
...
Рейтинг: 0 / 0
Проверка блокировки
    #34151183
StandD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
#IsRlocked()

Не работает!

kkk=0
if IsRlocked()=.t.
kkk=1
ENDIF

IF kkk=1
DO FORM blockzap
else
replace fio WITH fifi
endif

Так вот, программ переходит на replace fio WITH fifi !
...
Рейтинг: 0 / 0
Проверка блокировки
    #34151197
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНо если запись уже заблокирована - комп подвисает и внизу маленькими строчками "запись заблокирована, нажмите ESC"
SET REPROCESS TO 1

IsRlocked() проверяет не проверяет что запись заблокировано другим приложение - ISRLOCKED( ) returns a logical true (.T.) if the record is locked by the current application; otherwise a logical false (.F.) is returned.
...
Рейтинг: 0 / 0
Проверка блокировки
    #34151217
StandD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Burn авторНо если запись уже заблокирована - комп подвисает и внизу маленькими строчками "запись заблокирована, нажмите ESC"
SET REPROCESS TO 1

IsRlocked() проверяет не проверяет что запись заблокировано другим приложение - ISRLOCKED( ) returns a logical true (.T.) if the record is locked by the current application; otherwise a logical false (.F.) is returned.

Не помогло!
Регулярно постоянное сообщение о блокировке и не дает закрыть текущую форму
...
Рейтинг: 0 / 0
Проверка блокировки
    #34151422
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StandDЕсть ли возможность проверить блокировку строки БЕЗ попытки ее заблокировать?
Нет. Средствами FoxPro по другому невозможно.

Это FPD 2.6 ? В Visual FoxPro такая технология работы вызывает недоумение. Используйте буферизацию.
...
Рейтинг: 0 / 0
Проверка блокировки
    #34151656
StandD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ StandDЕсть ли возможность проверить блокировку строки БЕЗ попытки ее заблокировать?
Нет. Средствами FoxPro по другому невозможно.

Это FPD 2.6 ? В Visual FoxPro такая технология работы вызывает недоумение. Используйте буферизацию.

VFP 9.0.
А по поводу буферизации применительно к этой проблеме поподробнее можно?
...
Рейтинг: 0 / 0
Проверка блокировки
    #34151677
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StandDVFP 9.0.
А по поводу буферизации применительно к этой проблеме поподробнее можно?
Можно. Но для начала объясните почему такая проблема возникла вообще? Зачем Вам надо знать заблокирована запись другим пользователем или нет? Какую задачу Вы пытаетесь решить таким способом?
...
Рейтинг: 0 / 0
Проверка блокировки
    #34151871
Фотография burgos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте следующее:

Одна попытка блокировки.
SET REPROCESS TO 1
Максимальное время попытки 1 сек.
SET REPROCESS TO 1 SECONDS
...
Рейтинг: 0 / 0
Проверка блокировки
    #34152198
StandD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
burgosПопробуйте следующее:

Одна попытка блокировки.
SET REPROCESS TO 1
Максимальное время попытки 1 сек.
SET REPROCESS TO 1 SECONDS

Спасибо, попробую.
...
Рейтинг: 0 / 0
Проверка блокировки
    #34152212
StandD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ StandDVFP 9.0.
А по поводу буферизации применительно к этой проблеме поподробнее можно?
Можно. Но для начала объясните почему такая проблема возникла вообще? Зачем Вам надо знать заблокирована запись другим пользователем или нет? Какую задачу Вы пытаетесь решить таким способом?

Да, в общем-то, проблема вот в чем. Столкнулся с тем, что, редактируя справочник, я загружаю его поля в переменные и выкладываю их в форму редактирования. После рпедактирования пытаюсь записать их в файл. Но если в этот момент запись блокирована, то Фокс выдает то самое сообщение "... нажмите эск" и после нажатия эск очень долго думает, а если пользователь дважды клацнет, то программа абортируется. set escape выключать не хочу.
...
Рейтинг: 0 / 0
Проверка блокировки
    #34152463
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять же, вкратце.

-) Накладываешь буферизацию на таблицу (Свойство BuferModeOverride у курсора в DataEnvironment формы). Лучше наложить 5 режим буферизации

-) На форме напрямую редактируешь поля таблицы. Не надо никаких переменных

-) По кнопке "Сохранить" пишешь примерно такой код

Код: plaintext
1.
2.
3.
4.
5.
6.
IF TableUpdate(.T.,.T.,"MyTab") = .F.
	* Сохранение не прошло. Уточняем "почему?".
	LOCAL laError( 1 )
	=AERROR(laError)
	* Анализ массива laError для уточнения причины ошибки
ENDIF

-) В главном стартовом файле обязательно сделай настройку вроде

Код: plaintext
SET REPROCESS TO  3 

Значение подбери сам. Но особо большое указывать не надо. И значение 1 я бы не указывал. Слишком мало.

Собственно, все. Никаких дополнительных копирований в переменные и из переменных. Никаких самостоятельных попыток заблокировать/разблокировать запись. Все это сделает FoxPro самостоятельно.
...
Рейтинг: 0 / 0
Проверка блокировки
    #34152526
StandD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да уж, были бы мозги - было бы сотрясение...
Спасибо, буду разбираться.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проверка блокировки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]