循环遍历Salesforce中的一组元素

时间:2013-11-29 13:36:47

标签: salesforce salesforce-service-cloud

我通过在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;
}

1 个答案:

答案 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;
}

另一个麻烦就是抓住常见的异常。这是一种不好的做法。