【问题标题】:looping over a set of elements in Salesforce在 Salesforce 中循环一组元素
【发布时间】:2013-11-29 13:36:46
【问题描述】:

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

【问题讨论】:

  • 嗨@Apurbo,看起来您已经得到了答案,但是您知道在salesforce.stackexchange.com 上有一个专门针对Salesforce 的新stackexchange 站点。快来加入那边的社区吧! :) 作为参考,与 SO 相比,新 stackexchange 上的问题大约是 SO 的 4 倍,而且参与者也更多。

标签: salesforce salesforce-service-cloud


【解决方案1】:

这里不需要第二个内循环,只需将其删除即可。此外,每次添加新值时,您都需要创建一个 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;
}

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

【讨论】:

  • 嗨 Pavel,感谢您的建议..但我仍然获得了使用 soql 检索的第一组记录......请建议。
猜你喜欢
  • 2010-12-20
  • 2019-12-28
  • 1970-01-01
  • 2016-03-03
  • 2023-04-03
  • 2021-01-23
  • 2013-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多