powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / почему не срабатвыет TABLEREVERT?
9 сообщений из 9, страница 1 из 1
почему не срабатвыет TABLEREVERT?
    #33790501
Снифф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HI всем
делаю редактирование записи как читал здесь в топиках. Все номрально, а на совпадащих значенияях ерунда получаеться
в load формы
Код: plaintext
= CURSORSETPROP('Buffering',  5 , 'клиент')
кнопка ОК в ERROE
Код: plaintext
1.
2.
3.
4.
IF ERROR()= 1884 
=MESSAGEBOX("совпадение значений", 48 )
m.error=.T.
lnError= 1 
ENDIF 
кнопка ОК в Click
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
...
m.error=.f.
lnError= 0 
...
GO TOP IN клиент

IF NOT m.error
TABLEUPDATE(.T.,.T.,'клиент')
ENDIF 

IF lnError= 1 
TABLEREVERT(.T.,'клиент')
SEEK pnFind ORDER iId IN клиент
...
ENDIF
Всеравно в несколькех полей изменения остаються
почему не срабатвыет TABLEREVERT?
...
Рейтинг: 0 / 0
почему не срабатвыет TABLEREVERT?
    #33791373
_Иван_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверно у тебя стоит
"не та" буферизация
скорее строчная, и при
GO TOP IN клиент
уже "без твоего участия" все сбросилось.......
поищи топики Владимира Максимова
про буферизацию
...
Рейтинг: 0 / 0
почему не срабатвыет TABLEREVERT?
    #33791380
_Иван_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О извини только увиделл что 5 буферизация....
Все дело в видимости переменных, в частности
lnError
она нпросто измененная в событии error
не видна
...
Рейтинг: 0 / 0
почему не срабатвыет TABLEREVERT?
    #33791588
Снифф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_иван_Все дело в видимости переменных, в частности
lnError
она нпросто измененная в событии error
не видна
обижаеш, у Базаяна с обьявления переменых и их видимостию книжка начинаеться
у меня в Click перывым делом прописано PUBLIC lnError
Еси толька надо обьявлять в LOAD формы? завтро попробую
но помоему и в Click ее прописать не ошибка
...
Рейтинг: 0 / 0
почему не срабатвыет TABLEREVERT?
    #33792793
Снифф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ничего не дало и перенос перменой в LOAD
сообщенье об ошибке выдается и даные в записе спокойно остаються измеными
Candidate у меня на (cFam++cIm+cOt+str(nIdUlica)+str(nBorn))
в форме редактирвния тхтБоксы подвязаны напрямую к полям, улици выбираються через комбо а далее при нажатие ОК для изменненых значений комбо стоит
Код: plaintext
UPDATE клиент SET клиент.nIdUlica=улица.nIdUlica,... WHERE клиент.IdCod=pnFind
Дык вот при совпадение значений откат TABLEREVERT на этот UPDATE срабатваит, а остальные поля так и остаються изменеными
...
Рейтинг: 0 / 0
почему не срабатвыет TABLEREVERT?
    #33794472
VladBoyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делай REPLACE вместо UPDATE и будет тебе счастье ;)
UPDATE по TABLEREVERT ты не откатишь, а REPLACE при наличии буфферизации можешь...

Или как вариант можно UPDATE в транзакцию завернуть:
BEGIN TRANSACTION
UPDATE
IF error
ROLLBACK
ENDIF
END TRANSACTION

поправьте если не прав...
...
Рейтинг: 0 / 0
почему не срабатвыет TABLEREVERT?
    #33794507
VladBoyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пардон при табличной буфферизации update можно откатить по TABLEREVERT...

по вопросу:
Ты можешь очень просто убедиццца в том, что остальные поля откатились: просто встань в любой текстбокс и увидишь как там данные чудесным образом вернуццца в исходное положение... ;)
Надо пройтись по всем текстбоксам и выполнить Refresh...
...
Рейтинг: 0 / 0
почему не срабатвыет TABLEREVERT?
    #33794756
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем же самому себе создавать дополнительные трудности, чтобы потом их героически преодолевать?

1) Ошибка 1884 будет генерится формой и, соответственно, сработает событие формы Error только в том случае, если после модификации будет предпринята попытка перехода на другую запись. Вне зависимости от факта буферизации.

А ты редактируешь только одну запись. Я так понимаю, у тебя на форме набор TextBox-ов. Т.е. событие Error формы вообще никогда не происходит.

Зачем пытаться принудительно ее вызвать через GO TOP? Чтобы создать себе дополнительные проблемы?

2) Функция TableUpdate() в случае ошибки сохранения не приводит к генерации системных сообщений или срабатыванию события Error формы. Она просто возвращает .F. Молча. Без визуальных "спец.эффектов".

Следовательно, событие Error формы - лишнее. Он просто никогда не сработает.

На кнопке "Ok" в событии Click

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
IF TableUpdate(.T.,.T.,"клиент") = .F.
	LOCAL laError( 1 )
	=AERROR(laError)
	TableRevert(.T.,"клиент")
	IF laError[ 1 , 1 ] =  1884 
		MessageBox("совпадение значений")
	ENDIF
ENDIF
...
Рейтинг: 0 / 0
почему не срабатвыет TABLEREVERT?
    #33795143
Снифф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ага спасибо!!!
уже начал сам менять код на REPLACE потом уже ваши ответы увидил
посмотрим чо получиться у меня
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / почему не срабатвыет TABLEREVERT?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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