salesforce - 比较记录的旧值和新值
问题描述
希望你们都做得很好!!!!
我只需要解决这个问题,然后我用谷歌搜索了逻辑,当我尝试时出现错误,然后我复制了在线代码并粘贴了它,但没有用。
以下代码的逻辑是:检查帐户的电话号码并比较电话号码的旧值和新值,如果它不是相同的值,那么我需要更新描述中的旧值。
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 到 Account 的非法分配。
请指导我。
提前致谢。
解决方案
我相信问题是这一行:
Account oldAcc = Trigger.oldMap.get(acc.Id);
我相信旧地图的类型是Map<String, sObject>
.
sObject
是一种类型,它是 Salesforce 对象(任何一个),但没有具体的。
因此,您尝试将 sObject 分配给您声明为 Account 类型的变量。
您可以执行以下操作:
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')
which 适用于通用 sObject。
推荐阅读
- r - 如何在R中按一列拆分表?
- r - 显示组的打印方法
- php - php多数据库备份
- ios - “'React/RCTViewManager.h' 文件未找到”我应该如何添加标题搜索路径?
- vba - VBA F9 按钮已识别 鼠标左键未识别
- javascript - 从 .txt 文件中提取特定数字
- javascript - jQuery $.getJSON 方法给出 CORS 错误
- python-3.x - DistributionNotFound 时导入惊喜
- c++ - 两个随之而来的 std::chrono::high_resolution_clock::now() 给出了~270ns的差异
- networking - Google Compute Engine 实例的 GUI