You need to sign in to do that
Don't have an account?
SFDC Guest
Apex trigger to update child field value with parent field
Hi, I am trying to update the child object - Vacancy_D2D__c field name-"Worksite_Location__c" with parent object TR1__Job__c field "TR1__Account__r.Name". But unable to do it. below is helper class. plz help.
public class UpdateCtr
{
public void setAccountName(List<Vacancy_D2D__c> vacancySchedules) {
for (Vacancy_D2D__c vacancyD2D : vacancySchedules) {
if (Vacancy_D2D__c.Worksite_Location__c == null) {
TR1__Job__c job = [SELECT Id, TR1__Account__r.Name FROM TR1__Job__c WHERE Id = :vacancyD2D.Vacancy__c];
vacancyD2D.Worksite_Location__c = job.TR1__Account__r.Name;
}
}
}
}
public class UpdateCtr
{
public void setAccountName(List<Vacancy_D2D__c> vacancySchedules) {
for (Vacancy_D2D__c vacancyD2D : vacancySchedules) {
if (Vacancy_D2D__c.Worksite_Location__c == null) {
TR1__Job__c job = [SELECT Id, TR1__Account__r.Name FROM TR1__Job__c WHERE Id = :vacancyD2D.Vacancy__c];
vacancyD2D.Worksite_Location__c = job.TR1__Account__r.Name;
}
}
}
}
public class UpdateCtr
{
public void setAccountName(List<Vacancy_D2D__c> vacancySchedules)
{
Set<String> vSetVacId = new Set<String>();
for (Vacancy_D2D__c vacancyD2D : vacancySchedules)
{
vSetVacId.add(vacancyD2D.Vacancy__c);
}
Map<TR1__Job__c> vMapTRIdTR = new Map<TR1__Job__c>([SELECT Id, TR1__Account__r.Name FROM TR1__Job__c WHERE Id In :vSetVacId]);
for (Vacancy_D2D__c vacancyD2D : vacancySchedules)
{
if (Vacancy_D2D__c.Worksite_Location__c == null && vacancyD2D.Vacancy__c != null)
{
vacancyD2D.Worksite_Location__c = vMapTRIdTR.get(vacancyD2D.Vacancy__c).TR1__Account__r.Name;
}
}
}
}
Please mark it as correct.
Please follow the best practices:
https://developer.salesforce.com/blogs/developer-relations/2015/01/apex-best-practices-15-apex-commandments.html
below is helper class.
public void setAccountName(List<Vacancy_D2D__c> vacancySchedules)
{
Set<String> vSetVacId = new Set<String>();
for (Vacancy_D2D__c vacancyD2D : vacancySchedules)
{
vSetVacId.add(vacancyD2D.Vacancy__c);
}
Map< Id, TR1__Job__c> vMapTRIdTR = new Map<Id, TR1__Job__c>();
vMapTRIdTR.putAll([SELECT Id, TR1__Account__r.Name FROM TR1__Job__c WHERE Id In :vSetVacId]);
for (Vacancy_D2D__c vacancyD2D : vacancySchedules)
{
if (Vacancy_D2D__c.Work_Shift_Location_lkId__c == null && vMapTRIdTR.containskey(vacancyD2D.Vacancy__c))
{
vacancyD2D.Work_Shift_Location_lkId__c = vMapTRIdTR.get(vacancyD2D.Vacancy__c).TR1__Account__r.Name ;
} } }
trigger:
trigger VacancyD2DTrigger on Vacancy_D2D__c (before insert, before update, before delete, after insert , after update , after delete) {
VacancyD2DTriggerHandler vth = new VacancyD2DTriggerHandler(trigger.new,trigger.old,trigger.newMap,trigger.oldMap); if (Trigger.isBefore)
{ if (Trigger.isInsert || Trigger.isUpdate)
{
// Call class logic here!
vth.setAccountName(trigger.new);
} } }
What is the the lookup field api name on the child object?