尝试进行汇总顶点触发时编译错误

时间:2013-05-29 15:07:32

标签: triggers aggregate rollup

修改了一段代码以满足我的需求,但它无法编译。我天真的眼睛看不出我的方式错误:

trigger doRollup on Time_Record__c (after insert, after update, after delete, after     undelete) {

// List of parent record ids to update
Set<Id> parentIds = new Set<Id>();

// In-memory copy of parent records
Map<Id,Time_Record__c> parentRecords = new Map<Id,Time_Record__c>();

// Gather the list of ID values to query on
for(Daily_Time_Record__c c:Trigger.isDelete?Trigger.old:Trigger.new)
parentIds.add(c.Time_Record_Link__c);

// Avoid null ID values
parentIds.remove(null);

// Create in-memory copy of parents
for(Id parentId:parentIds)
parentRecords.put(parentId,new Time_Record__c(Id=parentId,RollupTarget__c=0));

// Query all children for all parents, update Rollup Field value
for(Daily_Time_Record__c c:[select id,FieldToRoll__c,Time_Record_Link__c from Daily_Time_Record__c where id in :parentIds])
parentRecords.get(c.Time_Record_Link__c).RollupTarget__c += c.FieldToRoll__c;

// Commit changes to the database

Database.update(parentRecords.values());
}

其中:

  • Time_Record__c是我的父母
  • RollUpTarget__c是我要去的地方
  • Daily_Time_Record__c是孩子
  • Time_Record_Link__c是孩子身上存在的父母的链接
  • FieldToRoll__c是一个汇总孩子的测试字段

认为这是我必须从这个通用模板中取代的东西:

trigger doRollup on Child__c (after insert, after update, after delete, after undelete) {
// List of parent record ids to update
Set<Id> parentIds = new Set<Id>();
// In-memory copy of parent records
Map<Id,Parent__c> parentRecords = new Map<Id,Parent__c>();
// Gather the list of ID values to query on
for(Child__c c:Trigger.isDelete?Trigger.old:Trigger.new)
  parentIds.add(c.ParentField__c);
// Avoid null ID values
parentIds.remove(null);
// Create in-memory copy of parents
for(Id parentId:parentIds)
  parentRecords.put(parentId,new Parent__c(Id=parentId,RollupField__c=0));
// Query all children for all parents, update Rollup Field value
for(Child__c c:[select id,Amount__c,ParentField__c from Child__c where id in :parentIds])
  parentRecords.get(c.ParentField__c).RollupField__c += c.Amount__c;
// Commit changes to the database
Database.update(parentRecords.values());
  }

理想情况下,我想从孩子那里累积7个字段(因此需要这个解决方案),但从小处开始。

0 个答案:

没有答案