You need to sign in to do that
Don't have an account?
Too many SOQL's: 101 error
/>List<Country__c> mcs = Country__c.getall().values();
System.debug('Rakesh'+ mcs);
for(GFQuote__c a : qr1)
{
qrStatus = a.Quote_Request_Status__c;
List <Opportunity> ct = New List<Opportunity>( [select Name, id,CloseDate,StageName, Deal_Review_Date__c, Reason_Closed_Lost__c, Deal_Lost_Description__c, Lost_Comments__c, Next_Opportunity_To_Quote__c from Opportunity where id = :a.Deal__c Limit 1]);
for(Opportunity d : ct)
{
qr2 = [select Id,Launch_Date__c,name from GFQuote__c where Deal__c = : d.id];
qr3 = [select Id,name,Quote_Request_Status__c from GFQuote__c where Deal__c = : d.id AND Quote_Request_Status__c != 'QR Lost'];
//FORCE-246
if (a.Launch_Date__c== NULL)
{
a.Launch_Date__c=d.CloseDate;
oppList.add(d);
Within this part of your code,
for(GFQuote__c a : qr1)
{
qrStatus = a.Quote_Request_Status__c;
List <Opportunity> ct = New List<Opportunity>( [select Name, id,CloseDate,StageName, Deal_Review_Date__c, Reason_Closed_Lost__c, Deal_Lost_Description__c, Lost_Comments__c, Next_Opportunity_To_Quote__c from Opportunity where id = :a.Deal__c Limit 1]);
for(Opportunity d : ct)
{
qr2 = [select Id,Launch_Date__c,name from GFQuote__c where Deal__c = : d.id];
qr3 = [select Id,name,Quote_Request_Status__c from GFQuote__c where Deal__c = : d.id AND Quote_Request_Status__c != 'QR Lost'];
//FORCE-246
if (a.Launch_Date__c== NULL)
{
a.Launch_Date__c=d.CloseDate;
oppList.add(d);
}
You have so many queries inside a FOR LOOP. This shouldn't be done. You'll need to re-code this with a more efficient logic that doesn't need you to QUERY inside a FOR loop.
NOTE:
This query: qr2 = [select Id,Launch_Date__c,name from GFQuote__c where Deal__c = : d.id]; is also within the loop but I do not see qr2 getting used anywhere?
Hey, you are getting the error as you are having a query within for Loop. As a best practice you should avaid that
Many ways we have to handle "Too Many SOQL 101"
Below are the few ways.
1. We can use inner queries.
2. Use Test.startTest() and Test.stopTest()
3. Don't write the SOQL inside a loop
4. Use List,set and maps efficiently instead of query the same data multiple times.
5. If we face this in trigger, use trigger.newmap.keyset() and trigger.oldmap.keyset() and list context variables in triggers.
6. we use aggregateresult to handle this.
7. If the data available in custom settings, then use Custom settings methods to get the records.
Thanks,
VenkataNarasimhaRao.Vutla
nara.dotnet@gmail.com
9705898616