2017-05-19 3 views
1

Unten Code funktioniert gut beim Aktualisieren/Einfügen auf Visual Force Seite ein Datensatz zu einer Zeit, erhalten Fehler 'Einfügen fehlgeschlagen .... INVALID_FIELD_FOR_INSERT_UPDATE, kann nicht ID in einem einfügen Anruf' bei der Verwendung von Data Loader (Fehler auf Code zeigen, 'amcRecord einfügen'). Würde jemand wissen, wie man repariert?Sales Force Auslöser INVALID_FIELD_FOR_INSERT_UPDATE

trigger Status on Cl__c (after insert, after update)  
{ 
    List<AMC__c> amcRecord = new List<AMC__c>(); 
    for (Cl__c cls: Trigger.new )  
    { 
        Cl__c oldcls = Trigger.oldMap.get(cls.Id); 
        if (cls.Status__c == 'Completed' && (oldcls.Status__c != 'Completed'  ))  
     { 
         AMC__c newAMC = new AMC__c(); 
         newAMC.Cl__c = cls.ID; 
         newAMC.Default__c = true;   
         amcRecord.add(newAMC);  
         insert amcRecord; 
     } 
  } 
} 

Antwort

-1

Changed
insert amcRecord; 

zu

upsert amcRecord; 

Es scheint jetzt zu funktionieren.

0

amcRecord ist eine Liste, nicht ein einzelnes Element, aber Sie rufen für jedes Element in der Anforderung einfügen [das wäre nur 1 für die Benutzeroberfläche, aber bis zu 200 mit dem Datenladeprogramm. Sie müssen die insert amcRecord-Zeile verschieben, nachdem die for (... Trigger.new) -Schleife beendet wurde, so dass sie nur einmal aufgerufen wird, z.

trigger Status on Cl__c (after insert, after update) 
{ 
    List<AMC__c> amcRecord = new List<AMC__c>(); 
    for (Cl__c cls: Trigger.new) 
    { 
     Cl__c oldcls = Trigger.oldMap.get(cls.Id); 
     if (cls.Status__c == 'Completed' && (oldcls.Status__c != 'Completed' )) 
     { 
      AMC__c newAMC = new AMC__c(); 
      newAMC.Cl__c = cls.ID; 
      newAMC.Default__c = true; 
      amcRecord.add(newAMC); 
     } 
    } 
    insert amcRecord; 
}