12

Is there anyway to update a rollup summary field with lookup relation ship for a custom object. How can we achieve this using triggers ?

  • Sorry, I've deleted my answer, because I misunderstood the question. Here you have a good article to follow: blog.jeffdouglas.com/2009/07/30/… – Martin Borthiry Apr 25 '14 at 6:25
  • Normally I would flag this as asking someone to do your work for you or a duplicate... But it is a good chance to highlight tools for this purpose and I couldn't find a canonical question to this effect. – Adrian Larson May 29 '15 at 22:46
12

https://github.com/abhinavguptas/Salesforce-Lookup-Rollup-Summaries

The above link from Abhinav solves your problem

If you need for more than one object would recommend to try the excellent tool from Andrew

http://andyinthecloud.com/2013/07/07/new-tool-declarative-rollups-for-lookups/

And if you have requirement for only one object ,you can prefer jeff solution as well

http://blog.jeffdouglas.com/2009/07/30/roll-up-summary-fields-with-lookup-relationships-part-1/

| improve this answer | |
  • 2
    Yeah I would generally put Fawcett tops on the list. – Adrian Larson May 29 '15 at 22:42
2

Here is an example :

  1. Account (Parent Object)
  2. Contact (Child Object).
  3. Contact_Recs__c (Roll up summary field/Custom Field).
  4. accountid (Lookup field).

Code sample:

trigger CountContactsnew on Contact (after insert, after delete, after undelete) {

    List<id> accIdList = new List<id>();
    if(Trigger.isInsert || Trigger.isUndelete){
        For(Contact con1 : Trigger.new){
            accIdList.add(con1.accountid);
        }
    }
    if(Trigger.isDelete){
        For(Contact con1 : Trigger.old){
            accIdList.add(con1.accountid);
        }
    }
    List<Account> accUpdateList = new List<Account>();
    For(Account acc : [SELECT Contact_Recs__c,(SELECT id FROM Contacts) FROM Account WHERE id =: accIdList]){
        acc.Contact_Recs__c = acc.Contacts.size();
        accUpdateList.add(acc);
    }
    try{
        update accUpdateList;
    }Catch(Exception e){
        System.debug('Exception :'+e.getMessage());
    }
}
| improve this answer | |
  • did you mean to use the in 'operator' instead of the 'is'? in as opposed to = – Shmuel Kamensky Jan 5 '17 at 23:31
1

I would also recommend this 'no code' Flow solution which I have used in the past: https://salesforceweek.ly/2015/02/how-to-create-roll-up-summaries-using-flow.html

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.