function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Surya.236Surya.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

 
AbhinavAbhinav (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 .