You need to sign in to do that
Don't have an account?
Surya.236
I'm getting 101soql error because of methods in for loop has soql queries. Please help to solve this.
private List<Finding> processFindings(List<FINDING__C> findings){
try{
List<Finding> findingsList = new List<Finding>();
if(findings!=null){
for(FINDING__C finding : findings){
Finding findingObj = new Finding();
findingObj.Id=finding.id;
findingObj.subject = finding.Name;
findingObj.longdescription = finding.Finding_Long_Description__c;
findingObj.createdOn = finding.CreatedDate;
if(finding.Has_Proposal__c && !finding.Proposals__r.isEmpty()) {
if(finding.Proposals__r[0].status==STATUS_CLOSED) {
findingObj.approver = finding.Proposals__r[0].contact.name;
CASE solution = getApprovedSolution(finding.Proposals__r[0].Id);
if(solution!=null){
findingObj.tatImpact = solution.TAT_Impact_Estimate__c + 'day(s)';
findingObj.costImpact = solution.Financial_Impact__c;
}
}
}
findingObj.lstHistories = HistoryController.getSObjectHistories(finding.Id);
findingsList.add(findingObj);
}
}
return findingsList;
}
catch(Exception e){ throw new UtilExceptions.CustomException(new UtilExceptions.LogBuilder().createClassLogExceptionEvent(e,GenerateHistoryReportController.class.getName()));}
}
I'm getting 101soql error because of methods in for loop has soql queries. Please help to solve this.
Methods in loop:
getSObjectHistories
getApprovedSolution
try{
List<Finding> findingsList = new List<Finding>();
if(findings!=null){
for(FINDING__C finding : findings){
Finding findingObj = new Finding();
findingObj.Id=finding.id;
findingObj.subject = finding.Name;
findingObj.longdescription = finding.Finding_Long_Description__c;
findingObj.createdOn = finding.CreatedDate;
if(finding.Has_Proposal__c && !finding.Proposals__r.isEmpty()) {
if(finding.Proposals__r[0].status==STATUS_CLOSED) {
findingObj.approver = finding.Proposals__r[0].contact.name;
CASE solution = getApprovedSolution(finding.Proposals__r[0].Id);
if(solution!=null){
findingObj.tatImpact = solution.TAT_Impact_Estimate__c + 'day(s)';
findingObj.costImpact = solution.Financial_Impact__c;
}
}
}
findingObj.lstHistories = HistoryController.getSObjectHistories(finding.Id);
findingsList.add(findingObj);
}
}
return findingsList;
}
catch(Exception e){ throw new UtilExceptions.CustomException(new UtilExceptions.LogBuilder().createClassLogExceptionEvent(e,GenerateHistoryReportController.class.getName()));}
}
I'm getting 101soql error because of methods in for loop has soql queries. Please help to solve this.
Methods in loop:
getSObjectHistories
getApprovedSolution
Abhinav (Salesforce Developers)
Create a map with finding ID as key and map it with value you want to fetch before for loop and then you can call map inside loop .