我通过在sfdc中的以下顶点代码中使用此soql来获取一组10条记录。 获取记录后,我只需更新ILR_ c字段的新值。(ilrItemClone.ILR _c = ilrClone.id)然后需要插入一组新的10条记录,所有其他字段都是与ILR__c除外的原始记录相同。 但是,我通过列表“ilrItem”循环无法正常工作,在调试日志中,我发现第一组记录有10次到来,因此无法在系统中插入记录。
请让我知道如何通过所有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 :(得分: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;
}
另一个麻烦就是抓住常见的异常。这是一种不好的做法。