关于 salesforce:Apex DML 无法识别 SOQL 所识别的变量

Apex DML won't recognise variable that SOQL does

我是 Salesforce 开发的新手,我在沙盒组织中测试了与此类似的查询,该查询有效,但是在尝试更新实时组织中的记录时,我遇到了一些问题。

问题和背景如下:
我正在尝试通过 Apex DML 更新某些作业记录的"记录类型"字段。我打开了开发者控制台并运行了一个查询:

1
SELECT Name, GW_Volunteers__Campaign__c, RecordtypeId FROM GW_Volunteers__Volunteer_Job__c WHERE GW_Volunteers__Campaign__c = '7010O000001P2XIQA0' and RecordTypeId = null LIMIT 5

这很好用,会显示前 5 个没有分配记录类型的工作记录,这是我要更新的。

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

1
2
3
4
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];
bjobs.RecordTypeId='0120O000000LAY6QAO';
update bjobs;

我不断收到以下错误:

Line: 3, Column: 11 Variable does not exist: RecordTypeId

除非我错过了一些非常明显的事情,否则我无法弄清楚为什么会发生这种情况。因为它可以很好地识别查询中的变量,并且沙箱中的类似查询(我也更新了 RecordTypeId)有效。

谢谢你,
YH


这里的问题是,你不能分配 bjobs.RecordTypeId='0120O000000LAY6QAO';。你知道,bjobsGW_Volunteers__Volunteer_Job__c.

的数组

所以,你需要做的是,

1
2
3
4
5
6
7
8
9
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;

希望,这会奏效。