首页 > 解决方案 > Apex DML 无法识别 SOQL 所做的变量

问题描述

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

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

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 个没有分配记录类型的工作记录,这是我想要更新的。

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

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;

我不断收到以下错误:

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

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

谢谢你,
YH

标签: salesforceapexsoqldml

解决方案


这里的问题是,你不能分配bjobs.RecordTypeId='0120O000000LAY6QAO';. 你知道,bjobs是一个数组GW_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;

希望,这会奏效。


推荐阅读