问题描述
这是我当前的可批处理顶点代码,当前此批处理作业将数据从新的自定义对象ERT_Case_Type__c复制到旧的自定义对象Case_Type__c
但是问题是当没有Level2或Level3时,此作业无法复制。我的意思是说Level2或Level3为NULL
我如何确保Batchable Salesforce顶点代码报告未复制的记录,因为在案例类型中需要匹配的L1,L2和L3集。
With wrdDoc
With .Range.Find
.MatchWholeWord = True
.Text = "text1"
.Execute
If .Found = True Then
Cells(resultRow,1).Value = strFileName
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Text = "text2"
.Execute
If .Found = True Then
MsgBox "This document contains the word2"
预先感谢, 卡罗琳
解决方法
现在还不清楚您为什么遇到问题,或者实际上是什么问题。没有逻辑以字段Level_1__c
,Level_2__c
和Level_3__c
的条件为条件,在这些字段中的任何一个上都没有NullPointerException
的可能性。
如果Case_Type__c
对象上的字段是必需的,或者Case_Type__c
对象上有一个触发器或声明性的自动化方法期望它们不是非{null
,那么您可能会在那里产生错误。您确实有吞咽的异常:
} catch(Exception e) {
System.debug(e);
}
您应该删除的,因为它隐藏了insert
上发生的所有实际错误。这可能会指导您解决真正的潜在问题。
另外请注意,您确实不需要Batch Apex来执行此操作。您可以使用任何Salesforce数据加载器提取一个对象,然后将数据加载到另一个对象,来轻松完成此任务。
批处理Apex不会固有地报告失败的记录,尤其是当您显式禁止异常时。为此,您需要使用Database.insert()
之类的部分成功方法来插入记录,遍历结果并保留有关数据库故障的信息(可能在原始源记录上)。代码会复杂得多,但是同样,我真的不认为您需要这样做。您需要定位并修复在插入时可能发生的问题,和/或切换到使用数据加载器。