You need to sign in to do that
Don't have an account?
Eunice Patajo 9
Apex Trigger not working on custom objects
Hi everyone,
I have two objects: Segment Brief Tracking and Segment Category Mapping. I've created a trigger that is supposed to get the Segment Category Mapping ID that corresponds to the Segment Name from Segment Brief Tracking - mapped to Segment Name field on Segment Category Mapping.
I'm not getting an error but the Segment Category Mapping ID field is not being populated at all.
I've only started dabbling into Apex triggers so it'd be great to have an expert's opinion on how this trigger could be written better/why it's not working.
Thank you!
I have two objects: Segment Brief Tracking and Segment Category Mapping. I've created a trigger that is supposed to get the Segment Category Mapping ID that corresponds to the Segment Name from Segment Brief Tracking - mapped to Segment Name field on Segment Category Mapping.
I'm not getting an error but the Segment Category Mapping ID field is not being populated at all.
I've only started dabbling into Apex triggers so it'd be great to have an expert's opinion on how this trigger could be written better/why it's not working.
Thank you!
trigger SegmentBriefTracking_AddSegmentID on Segment_Brief_Tracking__c (before insert, before update) { //Create a Set of all the Segment Names to be Uploaded Set<String> SegmentNames = new Set<String>(); //Variable declaration for (Segment_Brief_Tracking__c segbrieftrack : Trigger.new) if(segbrieftrack.Segment_Name_For_Upload__c!=''){ SegmentNames.add(segbrieftrack.Segment_Name_For_Upload__c);} //Map Segment Name for Upload to Segment Taxonomy Name Map<String,Segment_Category_Mapping__c> mastersheet = new Map<String,Segment_Category_Mapping__c>([Select Id, Segment_Name__c FROM Segment_Category_Mapping__c WHERE Segment_Name__c IN :SegmentNames]); //Add Segment Category Mapping ID to Segment Brief Tracking Record for (Segment_Brief_Tracking__c segbrieftrack : Trigger.new) if(segbrieftrack.Segment_Category_Mapping_ID__c!=null && segbrieftrack.Segment_Category_Mapping_ID__c!=''){ segbrieftrack.Segment_Category_Mapping_ID__c=mastersheet.get(segbrieftrack.Segment_Name_For_Upload__c).Id;} }
I am not sure how I missed this, but the IF condition in line 27 seems to be a contradicting statement.
I think you are supposed to update segbrieftrack.Segment_Category_Mapping_ID__c, if it is NULL or BLANK. Not the other way.
According to your condition, it will update segbrieftrack.Segment_Category_Mapping_ID__c only if it is already filled (NOT NULL and NOT BLANK).
Does this make sense?
All Answers
Line 15 in your code may have some issues. Direct assignment to MAP object works only on Id, not on Name field.
Try this code.
Thanks for your reply!
The trigger's still not working though - Segment Category Mapping ID is still not being populated.
I am not sure how I missed this, but the IF condition in line 27 seems to be a contradicting statement.
I think you are supposed to update segbrieftrack.Segment_Category_Mapping_ID__c, if it is NULL or BLANK. Not the other way.
According to your condition, it will update segbrieftrack.Segment_Category_Mapping_ID__c only if it is already filled (NOT NULL and NOT BLANK).
Does this make sense?
Thank you so much! It works now!
Do you have any tips on how to write the Apex Class to test this trigger? It's currently at 0% Code Coverage so I'd need to write a class to be able to deploy it.