Apex DML无法识别SOQL可以识别的变量

时间:2019-01-11 19:05:57

标签: salesforce apex soql dml

我是Salesforce Development的新手,我已经在一个可以工作的沙盒Org中测试了与此查询类似的查询,但是,当尝试更新实时Org中的记录时,我遇到了一些问题。

问题和内容如下:
我正在尝试通过Apex DML更新某些作业记录的“记录类型”字段。我已经打开开发者控制台并运行查询:

rewrite /origin {
  r (.*)
  to /destination{1}
}

rewrite {
  if {path} not_starts_with /origin
  to /{path} /{path}/
}

这很好,它将向我显示前5个未分配记录类型的作业记录,这就是我要更新的记录。

问题是当我打开“执行匿名”窗口并输入以下代码时:

rewrite {
  r ^/origin/(.*)
  to /destination{1}
}

rewrite {
  if {path} not_starts_with /origin
  to /{path} /{path}/
}

我一直收到以下错误:

  

行:3,列:11变量不存在:RecordTypeId

除非我错过了非常明显的事情,否则我无法弄清为什么会这样。因为它可以很好地识别查询中的变量,并且沙盒中的类似查询(我也更新了RecordTypeId)可以正常工作。

谢谢
YH

1 个答案:

答案 0 :(得分:3)

这里的问题是,您无法分配bjobs.RecordTypeId='0120O000000LAY6QAO';。您知道,bjobsGW_Volunteers__Volunteer_Job__c的数组。

所以,您需要做的是

GW_Volunteers__Volunteer_Job__c [] bjobs = [
SELECT Name, GW_Volunteers__Campaign__c, RecordTypeId FROM GW_Volunteers__Volunteer_Job__c WHERE GW_Volunteers__Campaign__c = '7010O000001P2XIQA0' and RecordTypeId = null LIMIT 5];

for(GW_Volunteers__Volunteer_Job__c job : bjobs)
{
   job.RecordTypeId='0120O000000LAY6QAO';  
}

update bjobs;

希望,这将起作用。