【问题标题】:Apex DML won't recognise variable that SOQL doesApex DML 无法识别 SOQL 所做的变量
【发布时间】:2019-06-06 17:36:52
【问题描述】:

我是 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)有效。

谢谢你,
是的

【问题讨论】:

  • 如果有效,请将其标记为已接受。

标签: salesforce apex soql dml


【解决方案1】:

这里的问题是,你不能分配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;

希望,这会奏效。

【讨论】:

    猜你喜欢
    • 2015-04-03
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2013-05-15
    • 2018-11-12
    • 1970-01-01
    • 2019-12-17
    相关资源
    最近更新 更多