| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вопрос вроде банальный и простой. Но у меня проблема. 
		
		
		
		
		
		
		
	Есть таблица 50000, в ней поле Field1. Когда в таблице T37 меняем поле No., то в Т50000 поле Field1 тоже меняется. В триггере OnValidate для поля No. таблицы 37 есть строки: Код: IF ("No." <> xRec."No.") AND (xRec."No." <> '') THEN BEGIN
   T50000.Field1 := "No.";
   T50000.MODIFY;
END; | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Чтобы вызвался триггер, надо передать параметр в процедуру Modify. Вот так: 
		
		
		
		
		
		
		
	Код: T50000.MODIFY(TRUE);  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			ПОдскажите, плиз, как обойти след. проблему: 
		
		
		
		
		
		
		
	Имеем таблицу 37. Когда в Заказе меняем поле "No", срабатывает триггер OnValidate(), в которорм есть след. строки: Код: T50022.TechNo := "No."; T50022.Modify(TRUE); В нем прописано следующее: Код: IF Rec.TechNo <> xRec.TechNo THEN выполнить какие-то действия   Как с этим бороться?  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Kadawrik
			 
 
			ПОдскажите, плиз, как обойти след. проблему: 
		
	Имеем таблицу 37. Когда в Заказе меняем поле "No", срабатывает триггер OnValidate(), в которорм есть след. строки: Код: T50022.TechNo := "No."; T50022.Modify(TRUE); В нем прописано следующее: Код: IF Rec.TechNo <> xRec.TechNo THEN выполнить какие-то действия   Как с этим бороться? Тогда код будет такой: Код: T50022.VALIDATE(TechNo,"No."); T50022.Modify(TRUE);  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Цитата: 
	
		
			Тогда код будет такой: 
Код: T50022.VALIDATE(TechNo,"No."); T50022.Modify(TRUE); Честно говоря, ну ооочень не хотелось бы всё это сейчас переделывать. Если длугих, менее трудозатратныых вариантов нет, то придется делать так, как Вы предлагаете.  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Попробуйте в табличке написать ф-цию, в которую будете передавать булево значение и вызывать перед modify, а в modify сделайте 
		
		
		
		
		
		
		
	Код: IF (Rec.TechNo <> xRec.TechNo) or (переданная переменная) THEN выполнить какие-то действия  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Если вы в T50022.TechNo присваиваете "No.", который ничем не отличается TechNo то зачем делать MODIFY?  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В том-то и дело, что ДО присвоения эти значения разные (к примеру, до выполнения команды T50022.TechNo := "No." , поля содержали след. значения: T50022.TechNo = RI265,а "No." равнялось AM378
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			В том-то и дело, что ДО присвоения эти значения разные (к примеру, до выполнения команды T50022.TechNo := "No." , поля содержали след. значения: T50022.TechNo = RI265,а "No." равнялось AM378
		
	 
 
		 | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Код: T50022.TechNo := "No."; //строка 1 T50022.Modify(TRUE); //строка 2 T50022.Zoom.TechNo Rec.Zoom.TechNo xRec.Zoom.TechNo Курсор стоит на стороке 1 (т.е. как я понимаю строка эта еще не выполнилась), переменные имеют след. значения: T50022.Zoom.TechNo - старое значение Rec.Zoom.TechNo - Error: Symbol Rec was not found xRec.Zoom.TechNo - Error: Symbol xRec was not found Нажимаем F8. Курсор переходит в строку 2. Наши переменные: T50022.Zoom.TechNo - НОВОЕ значение Rec.Zoom.TechNo - Error: Symbol Rec was not found xRec.Zoom.TechNo - Error: Symbol xRec was not found Еще раз F8 - попадаем в триггер OnModify таблицы 50022. Переменные становятся: T50022.Zoom.TechNo - Error: Symbol TechNo was not found Rec.Zoom.TechNo - НОВОЕ значение xRec.Zoom.TechNo - НОВОЕ значение ПАЧИМУУУУ!?!?!? Это какой-то глюк в программе или у меня уже в голове глючит и я за деревьями не вижу леса?  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Все верно. Вот если вы будете делать T50022.VALIDATE(TechNo, "No."), тогда в триггере OnValidate увидите разное значение Rec и xRec. Эта информация даже есть во встроенном хелпе  
		
		
		
		
		
		
		
	  Статья "xRec and FIELDNO".
		 | 
| 
	
 |