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

Как проверить, заблокирована ли запись? Проблема в том, что если использовать LOCK-RLOCK, то ФОКС пытается заблокировать строку и выдать результат блокировки. Но если запись уже заблокирована - комп подвисает и внизу маленькими строчками "запись заблокирована, нажмите ESC". Но это все не очень заметно для пользователя и довольно долго комп выходит из этой ситуации.
Есть ли возможность проверить блокировку строки БЕЗ попытки ее заблокировать?
...
Рейтинг: 0 / 0
23.11.2006, 17:22
    #34151137
#
#
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка блокировки
IsRlocked()
...
Рейтинг: 0 / 0
23.11.2006, 17:32
    #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
23.11.2006, 17:34
    #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
23.11.2006, 17:38
    #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
23.11.2006, 18:35
    #34151422
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка блокировки
StandDЕсть ли возможность проверить блокировку строки БЕЗ попытки ее заблокировать?
Нет. Средствами FoxPro по другому невозможно.

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

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

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

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

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

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

Да, в общем-то, проблема вот в чем. Столкнулся с тем, что, редактируя справочник, я загружаю его поля в переменные и выкладываю их в форму редактирования. После рпедактирования пытаюсь записать их в файл. Но если в этот момент запись блокирована, то Фокс выдает то самое сообщение "... нажмите эск" и после нажатия эск очень долго думает, а если пользователь дважды клацнет, то программа абортируется. set escape выключать не хочу.
...
Рейтинг: 0 / 0
24.11.2006, 10:25
    #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
24.11.2006, 10:38
    #34152526
StandD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка блокировки
Да уж, были бы мозги - было бы сотрясение...
Спасибо, буду разбираться.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проверка блокировки / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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