powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не могу отследить наличие изменений в Local View
3 сообщений из 3, страница 1 из 1
Не могу отследить наличие изменений в Local View
    #33285610
nfp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nfp
Гость
Извините , но не могу отследить наличие изменений в Local View . Предыдущие форумы на эту тему смотрел, но видимо где-то что-то не понимаю.
Суть такая.
Есть у меня таблица ZAGOT с полями: код детали, код цеха, код участка, 12 полей ,где храниться кол-во изготовленное за месяц,...
Для этой таблицы есть local View Vzagot в нее выбираются данные по коду цеха, коду участка.

При запуске программы устанавливаются начальные значения цеха, участка, открываются ZAGOT и VZAGOT .
Пользователь заходит в форму для редактирования количества за месяц. В Init формы пишу

Код: plaintext
1.
2.
3.
SELECT Vzagot  
=REQUERY()
=CURSORSETPROP('Buffering',  5 ,'ZAGOT')   && откроем БУФЕР ТАБЛИЦЫ
В Gride выдаю данные VZAGOT для корректировки количества.
Есть кнопка "сохранить"

Как при выходе из формы определить менял пользователь данные после последнего сохранения или нет?
Сначала пробовал с помощью такого кода в distroy формы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sele Vzagot  
GO TOP
DO WHILE !EOF()
	IF LEN(CHRTRAN(GetFldState(- 1 ,"Vzagot"),"1",""))> 0 
		WAIT WINDOW MOD+ND+SUF+ ' была модификация'
		EXIT 
	ENDIF
	SKIP
ENDDO
Не получилось

Сейчас код примерно такой
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT zagot
if GetNextModified( 0 )> 0 
   IF MESSAGEBOX('Сохранить изменения? ',;
	     4  +  32  +  256 ,'Внимание!!!' )= 6 
		SELECT ZAGOT
		=TABLEUPDATE(.t.)  &&  сохраняем изменения
	ELSE 
	WAIT WINDOW NOWAIT 'отмена'  
		=TABLEREVERT()
	ENDIF 
ENDIF  
=CURSORSETPROP('Buffering',  1 ,'ZAGOT')   && закроем БУФЕР ТАБЛИЦЫ

Если не выполнялось ни каких изменений то все срабатывает
Если изменил количество, но остался на этой же записи и нажал на выход, то мой код изменения не видит. Если ушел с этой записи, то при выходе выдается запрос "сохранить изменения" При "нет" выполняет TABLEREVERT()
а затем выдает сообщение о том что таблица содержит незафиксированные изменения
Подскажите,пожалуйста , в чем дело?
...
Рейтинг: 0 / 0
Не могу отследить наличие изменений в Local View
    #33285936
nfp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nfp
Гость
Кажется нашел свои ошибки
1 надо писАть =TABLEREVERT(.t.)

2 Нужно встать на 1-ю запись и в таблице и во вьюшке
Код: plaintext
1.
2.
3.
4.
SELECT vzagot
GO TOP 
SELECT zagot
GO TOP
Теперь кажется все заработало
...
Рейтинг: 0 / 0
Не могу отследить наличие изменений в Local View
    #33287006
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi nfp!

1) Не надо ничего трогать в курсоре самой таблицы. Работай ТОЛЬКО с курсором
представления - т.е. Vzagot. Это твоя основная ошибка. Не надо ставить
буферизацию на саму таблицу, надо сменить для представления режим с 3-го на
5-й, и рулить именно представлением.
2) В классическом варианте надо ПРОВЕРЯТЬ что возвращает TableUpdate - он
может и не сработать! И если он вернул .F. - надо используя AERROR()
уточнить причины ошибки.
3) Не пренебрегай необязательными параметрами - например GetNextModified(0,
"Vzagot") - аналогично для остальных.
4) Перечитай ещё раз все материалы по буферизации, проделай простые
"упражнения" со своим представленим из командного окна - посмотри что, когда
и как происходит...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не могу отследить наличие изменений в Local View
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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