You need to sign in to do that
Don't have an account?
Phuc Nguyen 18
Update child fields from parent
In an apex class I am trying to update a couple field on a child record from the parent when the child record is created.
Any suggestion is appreciated.
Thanks
P
Any suggestion is appreciated.
Thanks
P
trigger ProjectProblem on Project_Problem__c (before insert)
{
List<Id> projectIds = new List<Id>();
for (Project_Problem projectProblem : trigger.New)
{
projectIds.add(projectProblem.project__c); //assume master-detail relationship field is called project__c
}
Map<Id,Project__c> projectMap = new Map<Id,Project__c>([select id, field1__c,field2__c,..... from Project__c where id in : projectIds]);
for (Project_Problem projectProblem : trigger.New)
{
projectProblem.fieldTobeUpdated1__c = projectMap.get(projectProblem.project__c).field1__c;
projectProblem.fieldTobeUpdated2__c = projectMap.get(projectProblem.project__c).field2__c;
}
}
All Answers
In that case, I would suggest using process builder or trigger. if the logic is simple, I would prefer process builder
Thanks,
P
trigger ProjectProblem on Project_Problem__c (before insert)
{
List<Id> projectIds = new List<Id>();
for (Project_Problem projectProblem : trigger.New)
{
projectIds.add(projectProblem.project__c); //assume master-detail relationship field is called project__c
}
Map<Id,Project__c> projectMap = new Map<Id,Project__c>([select id, field1__c,field2__c,..... from Project__c where id in : projectIds]);
for (Project_Problem projectProblem : trigger.New)
{
projectProblem.fieldTobeUpdated1__c = projectMap.get(projectProblem.project__c).field1__c;
projectProblem.fieldTobeUpdated2__c = projectMap.get(projectProblem.project__c).field2__c;
}
}
Thanks
P
Can this be made as any after insert?
There is validation in the code which is causing the save to fail and if its in the after insert it states the record is read only.
P
So the before insert works if I take the actual field update out:
projectProblem.fieldTobeUpdated1__c = projectMap.get(projectProblem.project__c).field1__c;
Not sure what is going on here.
trigger ProjectProblem on Project_Problem__c (after insert)
{
List<Project_Problem__c> projectProblems = [select id,project__c,fieldtobeUpdate1__c, fieldtobeupdated2__c .... from Project_Problem__c where Id in :trigger.newMap.keyset()];
List<Id> projectIds = new List<Id>();
for (Project_Problem projectProblem : projectProblems )
{
projectIds.add(projectProblem.project__c); //assume master-detail relationship field is called project__c
}
Map<Id,Project__c> projectMap = new Map<Id,Project__c>([select id, field1__c,field2__c,..... from Project__c where id in : projectIds]);
for (Project_Problem projectProblem : projectProblems)
{
projectProblem.fieldTobeUpdated1__c = projectMap.get(projectProblem.project__c).field1__c;
projectProblem.fieldTobeUpdated2__c = projectMap.get(projectProblem.project__c).field2__c;
}
update projectProblems;
}