I am creating List of Accounts, using database.inser(list,false)
if i did give name for record in list,it will skip that particular and insert remaining records, is there any chance to get the details of skipped record.
3 Answers
Please check the following link of how to access the error records: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_methods_system_database_saveresult.htm
-
4Posting links as answers doesn't help. Links fail or become dead all the time. Commented Jun 28, 2018 at 15:03
I had a similar problem. For me, it was important to know exactly which inserted object succeeded or failed. I wrote some methods to handle this:
/**
* @description Method to insert objects to DataBase with improved audit
* @param sObjects - sObjects to be insert
* @param field - field that identifies Saveresult with inserted object
* @return map where key is a value from field specified as param: field
* and the value is Save result for sObject which is identified by key
*/
public static Map<String,Database.SaveResult> improvedInsert(List<SObject> sObjects, Schema.sObjectField field) {
Map<String,Database.SaveResult> saveResultByField = new Map<String,Database.SaveResult>();
List<Database.SaveResult> results = Database.insert(sObjects, false);
for (Integer i = 0;i<sObjects.size();i++) {
saveResultByField.put((String)sObjects.get(i).get(field),results.get(i));
}
return saveResultByField;
}
Methods give you a map where key is specified as parameter field value and the value is referencing Save/Upsert Result object.
-
Post relevant content to your answer or delete it. Links are not valuable here especially when they go stale– EricCommented Jan 31, 2017 at 12:33
Find the below code refer link
The Database methods return result objects containing success or failure information for each record. For example, insert and update operations each return an array of
Database.SaveResult
objects.
Database.SaveResult[] saveResultList = Database.insert(insertList, false);
// Iterate through saveResultList based on isSuccess capture the failed records
for (Database.SaveResult sr : saveResultList) {
if (sr.isSuccess()) {
// Operation was successful, so get the ID of the record that was processed
System.debug('Successfully inserted account. Account ID: ' + sr.getId());
}
else {
// Operation failed, so get all errors
for(Database.Error err : sr.getErrors()) {
System.debug('The following error has occurred.');
System.debug(err.getStatusCode() + ': ' + err.getMessage());
System.debug('Account fields that affected this error: ' + err.getFields());
}
}
}
Database.saveresult
which will have the failed records as well