2013-11-29 4 views
0

Я получаю набор из 10 записей, используя этот soql в коде под вершиной sfdc. После извлечения записей мне нужно только обновить новое значение для поля ILR_ c. (IlrItemClone.ILR _c = ilrClone.id), а затем необходимо вставить набор новых 10 записей со всеми остальными полями, такими же, как и исходные записи кроме ILR__c. Но мой цикл через список «ilrItem» работает некорректно, и в журнале отладки я обнаружил, что я получаю первый набор записей 10 раз и, следовательно, не в состоянии вставить записи в систему.цикл по набору элементов в Salesforce

Pls дайте мне знать, как я могу получить траверс через все 10 записей и получить желаемую запись. Уверен, что я совершил основную ошибку в цикле, но не смог понять. Спасибо за помощь ур.

Вот код.

ilrItem = [ SELECT Id, Name, 
         Account__c, 
         Comments__c, 
         ILR__c, 
         Precursor_Sample_Dropped__c, 
         PFE_Completed_Calls__c 
       FROM ILR_Item__c 
       WHERE ILR__c = :presentId]; 

    for (ILR_Item__c ilrItems: ilrItem) { 
     for(Integer i=0;i< ilrItem.size(); i++) { 
      try { 
       if (ilrItems!=null) { 
        ilrItemClone.Name= ilrItems.Name; 
        ilrItemClone.ILR__c= ilrClone.id; 
        ilrItemClone.Account__c= ilrItems.Account__c; 
        ilrItemClone.Comments__c= ilrItems.Comments__c; 
        ilrItemClone.PFE_Planned_Calls__c= ilrItems.PFE_Planned_Calls__c; 
        ilrItemClone.PFE_Completed_Calls__c= ilrItems.PFE_Completed_Calls__c; 
        ilrItemClist.add(ilrItemClone); 
       } 
      } catch(Exception e){} 
     } 
    } 
    system.debug('********'+ilrItemClist); 
    insert ilrItemClist; 
} 
+0

Привет, @Apurbo, похоже, что у вас уже есть ответ, но вы знаете, что есть новый сайт стека обмена, специфичный для Salesforce по адресу salesforce.stackexchange.com. Присоединяйтесь к сообществу! :) В качестве справочника есть около 4x вопросов о новом stackexchange по сравнению с SO и намного более активными участниками. –

ответ

2

Здесь вам не нужен второй внутренний контур, просто удалите его. Также вам нужно создать новый экземпляр ilrItems каждый раз при добавлении новых значений.

ilrItem = [ SELECT Id, Name, 
         Account__c, 
         Comments__c, 
         ILR__c, 
         Precursor_Sample_Dropped__c, 
         PFE_Completed_Calls__c 
       FROM ILR_Item__c 
       WHERE ILR__c = :presentId]; 

    for (ILR_Item__c ilrItems: ilrItem) { 
     try { 
      if (ilrItems!=null) { 
      // I do not know the type of object for ilrItemClone variable, because you define it above 
      ilrItemClone = new ilrItemClone__c(); 
      ilrItemClone.Name= ilrItems.Name; 
      ilrItemClone.ILR__c= ilrClone.id; 
      ilrItemClone.Account__c= ilrItems.Account__c; 
      ilrItemClone.Comments__c= ilrItems.Comments__c; 
      ilrItemClone.PFE_Planned_Calls__c= ilrItems.PFE_Planned_Calls__c; 
      ilrItemClone.PFE_Completed_Calls__c= ilrItems.PFE_Completed_Calls__c; 
      ilrItemClist.add(ilrItemClone); 
      } 
     } catch(Exception e){} 
    } 
    system.debug('********'+ilrItemClist); 
    insert ilrItemClist; 
} 

Другая проблема заключается в том, чтобы устранить общее исключение. Это плохая практика.

+0

Привет, Павел, спасибо за советы ... но все же я получаю 1-й набор записей, извлеченных с использованием soql, который повторяется каждый раз. –