0

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

1 回答 1

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

另一个麻烦是捕捉常见的异常。这是一个不好的做法。

于 2013-11-29T14:29:29.353 回答