You need to sign in to do that
Don't have an account?
Dewerys Vasquez
Hi, I am getting the following error message when creating a new Event. Please Help.
Error: Invalid Data.
Review all error messages below to correct your data.
Apex trigger eventCreateJobOutcome caused an unexpected exception, contact your administrator: eventCreateJobOutcome: execution of AfterInsert caused by: System.QueryException: List has no rows for assignment to SObject: Trigger.eventCreateJobOutcome: line 2, column 1
Review all error messages below to correct your data.
Apex trigger eventCreateJobOutcome caused an unexpected exception, contact your administrator: eventCreateJobOutcome: execution of AfterInsert caused by: System.QueryException: List has no rows for assignment to SObject: Trigger.eventCreateJobOutcome: line 2, column 1
All Answers
Hey Dewerys,
The above error usually shows up when you have queried for something and used the result on a VF page. But the query resulted 0 rows and still trying to access the record value (which does not exist right now per the criteria in SOQL).
Check for the criteria used in SOQL and try again. If possible help me with the source code.
Let me know the feedback.
Regards,
Zaja.
Sorry for the late respond. Here is the source code for the eventCreateJobOutcome Trigger. Thanks!
trigger eventCreateJobOutcome on Event (after insert) {
RecordType followUpRecordType = [SELECT Id FROM RecordType WHERE Name='Follow Up'];
List<Event> newEvents = new List<Event>();
Set<Id> whatIds = new Set<Id>();
Set<Id> whoIds = new Set<Id>();
Map<Id, Event> eventMap = new Map<Id, Event>();
List<Event> Events = new List<Event>();
if(Trigger.isInsert){
for(Event E : Trigger.new){
if(E.RecordTypeId != followUpRecordType.id || E.whoId == null) continue;
if(string.valueOf(E.whoId).substring(0, 3) != '003') continue;
boolean hasModifiedFields = false;
for(Schema.FieldSetMember f: SObjectType.Event.FieldSets.FollowupOutcomes.getFields()){
if(E.get(f.getFieldPath()) != null) hasModifiedFields = true;
}
if(hasModifiedFields) Events.add(E);
}
}
if(Events.size()>0){
List<Job_Outcome__c> JobOutcomes = new List<Job_Outcome__c>();
for(Event E : Events){
JobOutcomes.add(
new Job_Outcome__c(
Benefits_Added__c = E.Benefits_Added__c,
Contact__c = E.whoId,
Job_Made_Permanent__c = E.Job_Made_Permanent__c,
Job_Placement__c = E.whatId,
New_Hours_Week__c = E.New_Hours_Week__c,
New_Title__c = E.New_Title__c,
New_Wage__c = E.New_Wage__c,
New_Wage_Type__c = E.New_Wage_Type__c,
Outcome_Date__c = E.ActivityDate,
EventId__c = E.Id,
Promoted__c = E.Promoted__c));
}
if(jobOutcomes.size()>0) upsert jobOutcomes;
}
/*
if(!eventMap.isEmpty()){
List<Job_Outcome__c> JobOutcomes = new List<Job_Outcome__c>();
List<Job_Outcome__c> JobInserts = new List<Job_Outcome__c>();
Map<Id, Contact> contactMap = new Map<Id, Contact>([select id, Last_Successful_Follow_Up__c from Contact where Id IN :whoIds]);
List<Contact> contactUpdates = new List<Contact>();
Set<Id> updatedOutcomeEvents = new Set<Id>();
for(Event E : eventMap.values()){
if(contactMap.get(E.whoId).Last_Successful_Follow_Up__c == null ||
E.ActivityDate > contactMap.get(E.whoId).Last_Successful_Follow_Up__c)
contactUpdates.add(new Contact(id=E.whoId, Last_Successful_Follow_Up__c = E.ActivityDate ));
}
for(Job_Outcome__c J : [select Id,EventId__c from Job_Outcome__c where EventId__c IN :eventMap.keySet()]){
updatedOutcomeEvents.add(J.EventID__c);
JobOutcomes.add(
new Job_Outcome__c(
Benefits_Added__c = eventMap.get(J.EventId__c).Benefits_Added__c,
Contact__c = eventMap.get(J.EventId__c).whoId,
Job_Made_Permanent__c = eventMap.get(J.EventId__c).Job_Made_Permanent__c,
New_Hours_Week__c = eventMap.get(J.EventId__c).New_Hours_Week__c,
New_Title__c = eventMap.get(J.EventId__c).New_Title__c,
New_Wage__c = eventMap.get(J.EventId__c).New_Wage__c,
New_Wage_Type__c = eventMap.get(J.EventId__c).New_Wage_Type__c,
Outcome_Date__c = eventMap.get(J.EventId__c).ActivityDate,
EventId__c = eventMap.get(J.EventId__c).Id,
Id = J.Id,
Promoted__c = eventMap.get(J.EventId__c).Promoted__c));
}
if(JobOutcomes.size()>0) update JobOutcomes;
if(contactUpdates.size()>0) update contactUpdates;
Map<Id, Job_Placement__c> placementMap = new Map<Id, Job_Placement__c>([select id, job_retention__c from Job_Placement__c where Id IN :whatIds]);
for(Event E : eventMap.values()){
if(!updatedOutcomeEvents.contains(E.id)){
JobInserts.add(
new Job_Outcome__c(
Benefits_Added__c = E.Benefits_Added__c,
Contact__c = E.whoId,
Job_Made_Permanent__c = E.Job_Made_Permanent__c,
Job_Placement__c = E.WhatId,
Job_Retention__c = placementMap.get(E.whatId).Job_Retention__c,
New_Hours_Week__c = E.New_Hours_Week__c,
New_Title__c = E.New_Title__c,
New_Wage__c = E.New_Wage__c,
New_Wage_Type__c = E.New_Wage_Type__c,
Outcome_Date__c = E.ActivityDate,
EventId__c = E.Id,
Promoted__c = E.Promoted__c)); }
}
if(jobInserts.size()>0) insert jobInserts;
}
if(newEvents.size()>0){
List<Job_Outcome__c> JobOutcomes = new List<Job_Outcome__c>();
List<Contact> contactUpdates = new List<Contact>();
Map<Id, Job_Placement__c> placementMap = new Map<Id, Job_Placement__c>([select id, job_retention__c from Job_Placement__c where Id IN :whatIds]);
Map<Id, Contact> contactMap = new Map<Id, Contact>([select id, Last_Successful_Follow_Up__c from Contact where Id IN :whoIds]);
system.debug(placementMap);
for(Event E : newEvents){
Date eventDate = E.ActivityDate;
if(E.Follow_Up_Outcome__c == 'Working' &&
(contactMap.get(E.whoId).Last_Successful_Follow_Up__c == null ||
eventDate > contactMap.get(E.whoId).Last_Successful_Follow_Up__c))
contactUpdates.add(new Contact(id=E.whoId, Last_Successful_Follow_Up__c = eventDate ));
JobOutcomes.add(
new Job_Outcome__c(
Benefits_Added__c = E.Benefits_Added__c,
Contact__c = E.whoId,
Job_Made_Permanent__c = E.Job_Made_Permanent__c,
Job_Placement__c = E.WhatId,
Job_Retention__c = placementMap.get(E.whatId).Job_Retention__c,
New_Hours_Week__c = E.New_Hours_Week__c,
New_Title__c = E.New_Title__c,
New_Wage__c = E.New_Wage__c,
New_Wage_Type__c = E.New_Wage_Type__c,
Outcome_Date__c = eventDate,
EventId__c = E.Id,
Promoted__c = E.Promoted__c));
}
if(contactUpdates.size()>0) update contactUpdates;
if(JobOutcomes.size()>0) insert JobOutcomes;
}*/
}
I am a Junior Admin with no programming background and I come accross a different problem almost everyday, this was really helpfull to me.
Thank you very much!