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
Abhishek RayAbhishek Ray 

How to set query outside for loop for following query

This is apex trigger. I had error as I reached governor's limit. Somebody told me to get query outside for loop. How to do that? PLease help      

 

  membersToAdd.put(c.Id, new CaseTeamMember(ParentId = c.Id, MemberId = UserInfo.getUserId()));     

    }  

    if (!membersToAdd.isEmpty()) {

      try {

         for (CaseTeamMember ctm : membersToAdd.values()) {

          ctm.TeamRoleId = caseTeamRole.Id;

        }

    

       for (CaseTeamMember ctm : [SELECT Id, MemberId, ParentId

                       FROM CaseTeamMember

                       WHERE ParentId IN :membersToAdd.keySet()

                       AND MemberId = :UserInfo.getUserId()

                       ORDER BY ParentId])

 

                     

{

                   

          if (membersToAdd.containsKey(ctm.ParentId)) {

            membersToAdd.remove(ctm.ParentId);

          }

        }

      

        if (!membersToAdd.isEmpty()) {

          insert membersToAdd.values();

        }

      } catch (System.QueryException qe) {}

Suresh RaghuramSuresh Raghuram

create alist out side the for loop and collect the data comming from this query in that and make it as follows

 

List<sObject Name>  listName = List<sObject Name> ();

 

listName = [SELECT Id, MemberId, ParentId

                       FROM CaseTeamMember

                       WHERE ParentId IN :membersToAdd.keySet()

                       AND MemberId = :UserInfo.getUserId()

                       ORDER BY ParentId];

for (CaseTeamMember ctm : listName)

{


}

if this answers your question make this as solution

Abhishek RayAbhishek Ray

Sorry I am not sure but it is giving me error: unexpected token: 'List' at line 20 column 34

 

if (!membersToAdd.isEmpty()) {

      try {

         for (CaseTeamMember ctm : membersToAdd.values()) {

          ctm.TeamRoleId = caseTeamRole.Id;

        }

     

        List<Case> CasetoUpdate = List<Case> ();

        CasetoUpdate = [SELECT Id, MemberId, ParentId

                       FROM CaseTeamMember

                       WHERE ParentId IN :membersToAdd.keySet()

                       AND MemberId = :UserInfo.getUserId()

                       ORDER BY ParentId];

                      

       for(CaseTeamMember ctm:CasetoUpdate)

                      

 {

                    

          if (membersToAdd.containsKey(ctm.ParentId)) {

            membersToAdd.remove(ctm.ParentId);

          }

        }

       

        if (!membersToAdd.isEmpty()) {

          insert membersToAdd.values();

        }

      } catch (System.QueryException qe) {}

    }

  }

}

 

kerwintangkerwintang

The syntax is incorrect. Add the "new" keyword. It should be:

 

List<Case> CasetoUpdate = new List<Case> ();

SamuelDeRyckeSamuelDeRycke

What governor limit did you hit ? your soql query is not in your for loop ..I don't think you're fixing anything with current approach.

Jerun JoseJerun Jose
Agree.. Your SOQL should not be the problem.