+ Start a Discussion

Too many Script lines:

The following code is producing the above error message. 


What am I doing wrong with this?


trigger GetParentBulked onAccount (beforeinsert, beforeupdate) {

list <Account> listtoupdate = newlist<Account>();       



// For loop to iterate through all the queried Sales History records



list<string> JDE = newlist<string>();      

for (Account  h1: Trigger.new){     

JDE.add(h1.Parent_Account_JDE__c);  } 

//system.debug('JDE Cust = ' + JDE);      

Map<id,Account> a = newmap<id, account>([Select Id,Name,JDE_Customer__c,Parent_Account_JDE__c fromAccountwhere JDE_Customer__c in: JDE]) ;

// system.debug(' Account Map = ' + a); 

for(Account h: Trigger.new){       

for(id A1 : a.keyset() ){          

account A2 = a. get(A1);           

if(A2.JDE_Customer__c == h.JDE_Customer__c ){              


// h.ParentId = A2.id;    



h.ParentId = A2.Id;              

//system.debug('Account = ' + a); 


catch (Exception e)     


system.debug('No Account Record ---- ' + e);     


// system.debug('Accounts with Parents = ' + h);                 










You are trying to build (new) Account records to insert in a before trigger on Account?


Not a good idea; this creates recursion issues -- instead, you should use 'after' triggers to related SObject updates - plus, you may need to use a static variable to avoid firing the before triggers, if any, on the Accounts you newly insert.


See recipe: http://developer.force.com/cookbook/recipe/controlling-recursive-triggers 


As an additional debugging tip -- use the Limits system class to return  the # of script statements executed to date at various points in your code -- See Limits.getScriptStatements() --  


In geenral - too many script statements can be caused by:


* recursive triggers

* for loops executed within for loops within for loops

* too much logic complexity when applied to a single record multiplied by 200 (typical batch size)