Цитата:
Сообщение от
LEX
А в каком методе у вас происходит обновление? В clicked?
Нет , в modified . Я писал , редагирую в гриде , тогда после редактирования есть запрос - "Обновлять ето для другх записей из той же самой серии ?" и если "Да" , то тогда хожу по while - делаю update для другиь записей . Вот полный код :
Код:
public boolean modified()
{
Date dDat,dText;
CIRFASCharacterValue spVar;
CIRFASModelConfigId spalva;
boolean ret;
asgmTbl.data( UTAsgmTable );
asgms = UTAsgm::find(asgmTbl.AsgmId);
dDat = asgmTbl.PlanDate;
spVar = asgmTbl.CharacterValue;
spalva = asgmTbl.ModelVariant;
dText = this.dateValue();
ret = super();
if ( ret && asgms.ColourNesc )
{
element.SpChng( 1, dText );
}
if ( ret && asgms.MailNesc )
{
if ( dText != dDat )
{
element.Emailinti(asgms.AsgmId,date2str(dDat,321,2,2,2,2,2),date2str(dText,321,2,2,2,2,2),spvr);
}
}
if ( spvr )
{
UTAsgmTable_ds.research();
UTAsgmTable_ds.findRecord(asgmTbl);
}
return ret;
}
//
void SpChng( Int nFld, Date dText, Str cVal = "" )
{
UTAsgmTable asgmTb;
spvr = false;
if ( box::yesNoCancel( "Ar keisti visiems spalv.variantams", DialogButton::Ok, "Klausimas !" ) )
{
ttsbegin;
while select forupdate asgmTb
index hint Index1
where asgmTb.SalesId == asgmTbl.SalesId &&
asgmTb.AsgmId == asgmTbl.AsgmId
{
if ( asgmTb.CharacterValue && asgmTb.RecId != asgmTbl.RecId )
{
if ( nFld == 1 )
asgmTb.PlanDate = dText;
if ( nFld == 2 )
asgmTb.FactDate = dText;
if ( nFld == 3 )
asgmTb.AsgmValue = cVal;
asgmTb.update();
}
}
ttscommit;
spvr = true;
}
}
Вот как всё выглядит .