希望你们一切都很好!!
我只需要修复此错误,然后我搜索了逻辑,当尝试执行时遇到错误,然后我复制了在线代码,也粘贴了该代码,但没有用。
以下代码的逻辑是:检查帐户的电话号码,并比较电话号码的旧值和新值(如果该值不相同,那么我需要更新说明中的旧值。< / strong>
public class CheckOldAndNewValueonAccount {
public static void accNewOldValues(List<Account> accList){
for(Account acc: accList){
Account oldAcc = Trigger.oldMap.get(acc.Id);
if(acc.Phone != oldAcc.Phone){
acc.Description = 'Old Phone number this account is :'+oldAcc.Phone;
}
}
}
}
错误:从SObject到帐户的非法分配。
请对此进行指导。
预先感谢。
答案 0 :(得分:0)
我认为问题是此行:
Account oldAcc = Trigger.oldMap.get(acc.Id);
我相信旧地图的类型是Map<String, sObject>
。
sObject
是一种类型,它是Salesforce对象(任何一个),但没有一个具体类型。
因此,您尝试将sObject分配给要声明为帐户类型的变量。
您可以执行以下操作:
sObject oldAcc = Trigger.oldMap.get(acc.Id);
除非您特别想尝试将sObject强制转换为Account(具体)类型。我认为这样做没有太大的好处。让我们知道这是否是问题所在,并且问题是否已经解决。
编辑:请参见此线索:
https://trailhead.salesforce.com/en/content/learn/modules/apex_database/apex_database_sobjects
部分:将通用sObject强制转换为特定的sObject类型
您可以轻松地投射到“帐户”。那里有一个片段。
点表示法不适用于通用sObject类型。
或者您也可以使用.get('fieldname')
,它也适用于通用sObject。