Skip to main content
3 respuestas
  1. 17 mar 2016, 04:17
    Hi Jaysree,

    Using triggers, you can achieve rollup functionality with lookup relationship.

     For example, Display a number of contacts in each account. Create a custom field "number_of_contacts" in Account object and write a trigger on contact object.

    Please check the below sample code.

    ​

    trigger ContactCount on Contact (after insert, after update, after delete) {

    Map<Id, List<Contact>> AcctContactList = new Map<Id, List<Contact>>();

    Set<Id> AcctIds = new Set<Id>();

    List<Account> AcctList = new List<Account>();

    List<Contact> ConList = new List<Contact>();

    if(trigger.isInsert || trigger.isUPdate) {

    for(Contact Con : trigger.New) {

    if(String.isNotBlank(Con.AccountId)){

    AcctIds.add(Con.AccountId);

    }

    }

    }

    if(trigger.isDelete || trigger.isUPdate) {

    for(Contact Con : trigger.Old) {

    AcctIds.add(Con.AccountId);

    }

    }

    if(AcctIds.size() > 0){

    ConList = [SELECT Id, AccountId FROM Contact WHERE AccountId IN : AcctIds];

    for(Contact Con : ConList) {

    if(!AcctContactList.containsKey(Con.AccountId)){

    AcctContactList.put(Con.AccountId, new List<Contact>());

    }

    AcctContactList.get(Con.AccountId).add(Con);

    }

    System.debug('Account Id and Contact List Map is ' + AcctContactList);

    AcctList = [SELECT No_of_contacts__c FROM Account WHERE Id IN : AcctIds];

    for(Account Acc : AcctList) {

    List<Contact> ContList = new List<Contact>();

    ContList = AcctContactList.get(Acc.Id);

    Acc.No_of_contacts__c= ContList.size();

    }

    System.debug('Account List is ' + AcctList);

    update AcctList;

    }

    }

    Hope this helps you!

    Best Regards,

    Jyothsna
0/9000