You need to sign in to do that
Don't have an account?

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;
}
}
}
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;
}
Hi,
Try below :-
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.
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;
}
}
}
}
}