function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
chowdary marellachowdary marella 

need to bulkify

Hi i created a trigger which is working.but not working with bulkified(dataloader).please see my code,and let me know to bulkify this code

field in account object (Status_Contact) to be updated when a custom field (Project Status) on the custom Project Object gets updated.
i HAVE LOOKUP FROM PROJECT TO CONTACT(Contact__c)..

 

 

trigger contactlookup on Project__c (after insert,after update) {

list<Project__c> proj=new list<Project__c>();
Map<Id,List<Project__c>> mapProject = New Map<Id,List<Project__c>>();
set<id>ids=new set<id>();
for(Project__c p1:trigger.new)
{
ids.add(p1.Contact__c);
}

proj=[SELECT id,contact__r.Client_Status_Contact__c,contact__r.id from Project__c where Contact__c in:ids];


for(Project__c po :proj)

{
if(po.Contact__c != null)
{
List<Project__c> ProjectForKey =mapProject.get(po.Contact__c);
if(ProjectForKey == null)
{
ProjectForKey = new List<Project__c>();
mapProject.put(po.Contact__c, ProjectForKey);
}


list<contact> cont= new list<contact>();
cont=[select id ,name,Client_Status_Contact__c from contact];
contact c= new contact();
c.Client_Status_Contact__c =proj[0].contact__r.Client_Status_Contact__c;
c.id=proj[0].contact__r.id;
system.debug('##############################'+c.Client_Status_Contact__c);
for(Project__c p:trigger.new)
{
if(p.Project_Status__c!=null)
c.Client_Status_Contact__c=p.Project_Status__c;
system.debug('prrrr^^^^^^^^^^^^^^^^^^^^^^^'+p.Project_Status__c);
system.debug('accccccccc******************************************'+c.Client_Status_Contact__c);
}
Update c;
}
}
}

Sonu Sharma.ax1610Sonu Sharma.ax1610

Hi,

 

 

Please try following code.

 

trigger contactlookup on Project__c (after insert,after update) {

list<Project__c> proj=new list<Project__c>();
Map<Id,List<Project__c>> mapProject = New Map<Id,List<Project__c>>();
set<id>ids=new set<id>();
for(Project__c p1:trigger.new)
{
ids.add(p1.Contact__c);
}

proj=[SELECT id,contact__r.Client_Status_Contact__c,contact__r.id from Project__c where Contact__c in:ids];

list<contact> cont= new list<contact>();
for(Project__c po :proj)

{
if(po.Contact__c != null)
{
List<Project__c> ProjectForKey =mapProject.get(po.Contact__c);
if(ProjectForKey == null)
{
ProjectForKey = new List<Project__c>();
mapProject.put(po.Contact__c, ProjectForKey);
}



cont=[select id ,name,Client_Status_Contact__c from contact];

contact c= new contact();
c.Client_Status_Contact__c =proj[0].contact__r.Client_Status_Contact__c;
c.id=proj[0].contact__r.id;
system.debug('##############################'+c.Client_Status_Contact__c);
for(Project__c p:trigger.new)
{
if(p.Project_Status__c!=null){
c.Client_Status_Contact__c=p.Project_Status__c;
system.debug('prrrr^^^^^^^^^^^^^^^^^^^^^^^'+p.Project_Status__c);
system.debug('accccccccc******************************************'+c.Client_Status_Contact__c);

lstcontact.Add(c);

}
}

}
}

Update lstcontact;
}

 

 

Vinit_KumarVinit_Kumar

Hi,

 

Try below :-

 

trigger contactlookup on Project__c (after insert,after update){

list<Project__c> proj=new list<Project__c>();
Map<Id,List<Project__c>> mapProject = New Map<Id,List<Project__c>>();
List<Contact> lstcontact = new List<Contact>();
set<id>ids=new set<id>();
for(Project__c p1:trigger.new)
{
ids.add(p1.Contact__c);
}
proj=[SELECT id,contact__r.Client_Status_Contact__c,contact__c from Project__c where Contact__c in:ids];

for(Project__c po :proj)
{
if(po.Contact__c != null)
{
List<Project__c> ProjectForKey =mapProject.get(po.Contact__c);
}
else if(ProjectForKey == null)
{
ProjectForKey = new List<Project__c>();
mapProject.put(po.Contact__c, ProjectForKey);
}
}
list<contact> cont= new list<contact>();
cont=[select id ,name,Client_Status_Contact__c from contact];
for(Contact c:cont){
for(integer i=0;i<cont.size();i++){
for(Project__c p:trigger.new)
{
if(p.Project_Status__c!=null){
c.Client_Status_Contact__c =proj[i].contact__r.Client_Status_Contact__c;
c.id=proj[i].contact__c;
c.Client_Status_Contact__c=p.Project_Status__c;
system.debug('##############################'+c.Client_Status_Contact__c);
}
}
}
lstcontact.add(c);
}

Update lstcontact;

}

 

vishal@forcevishal@force

Hi Guys,

 

Instead of simply writing codes, can't we point out what the author of a post is doing wrong and how he can correct it? This will help him learn more rather than just using someone's code which won't help him all the time.

 

 

chowdary marellachowdary marella

Hi Thanks a lot for response.but iam getting error when creating record. i tried this ,working fine, but not working in bulk because i has taken as index 0( c.id=proj[0].contact__r.id;). please suggest me where exactly i need to modify.

req:- i need to get the latest updated picklist value to fall in Client_Status_Contact__c.. when updating Project_Status__c

 

 

trigger contactlookup on Project__c (after insert,after update) {

list<Project__c> proj=new list<Project__c>();
List<Contact> lstcontact = new List<Contact>();
contact c1=new contact();
Map<Id,List<Project__c>> mapProject = New Map<Id,List<Project__c>>();
set<id>ids=new set<id>();

    for(Project__c p1:trigger.new)
    {
        ids.add(p1.Contact__c);
    }

proj=[SELECT id,contact__r.Client_Status_Contact__c,contact__r.id  from Project__c where  Contact__c in:ids];
c1 =[select id,Client_Status_Contact__c from contact where accountid=:ids ORDER BY createdDate desc LIMIT 1];

    for(Project__c po :proj)
    {
        if(po.Contact__c != null)
        {
            List<Project__c> ProjectForKey =mapProject.get(po.Contact__c);
            
            if(ProjectForKey == null)
            {
                ProjectForKey = new List<Project__c>();
                mapProject.put(po.Contact__c, ProjectForKey);
            }
            
            list<contact> cont= new list<contact>();
            cont=[select id ,name,Client_Status_Contact__c from contact];
          contact c = new contact();
            c.Client_Status_Contact__c =proj[0].contact__r.Client_Status_Contact__c;
          c.id=proj[0].contact__r.id;
            
            
            if(trigger.isinsert)
            {
                for(Project__c p:trigger.new)
                {
                    if(p.Project_Status__c!=null)
                    {
                        c.Client_Status_Contact__c=p.Project_Status__c;
                    }
                }
            update c;
            }
            
            if(trigger.isupdate)
            {
                for(Project__c p:trigger.new)
                {
                    if (Trigger.oldMap.get(p.ID).Project_Status__c != Trigger.newMap.get(p.ID).Project_Status__c)
                    {
                        if(p.Project_Status__c!=null)
                        {
                            c.Client_Status_Contact__c=p.Project_Status__c;
                        }
                    }
                Update c;
                }
            }
        }
    }
}