这是一个与 APEX 代码相关的问题,特定于 VisualForce 控制器类。
问题
我正在尝试使用已知 AccountId 更新记录。但是,当我在 sObject 声明中设置 ID 时,SalesForce 会将字符串“IAR”附加到 ID 的末尾!
有人可以让我知道我做错了什么吗?如果我以错误的方式解决这个问题,而不是从 quicksave() 或 update() 之外的自定义方法更新记录的正确方法。
描述
所以基本上,用户会带着编码的 id 来到这个页面,它要么有一个 id,要么有一个级别。这是由函数 decode() 处理的,它接受一个字符串;“id”/“级别”。然后,我创建了一个 Account 变量“acc”,在我们使用语句“insert acc;”插入或更新它之前,它将用于存储所有的 Account 信息。因为,我无法使用“acc.id = salesForceID”设置“acc”的 ID,所以我决定在创建“acc”时设置它。以下 APEX 代码在声明“acc”变量时出现在构造函数中。
已通过 URL 变量
/application?id=001Q000000OognA
APEX 控制器类(精简版)
salesForceID = decode('id');
debug1 = 'salesForceID: ' + salesForceID;
acc = new Account(id = salesForceID);
debug2 = 'Account ID: ' + acc.id;
调试输出
salesForceID: 001Q000000OognA
Account ID: 001Q000000OognAIAR
评论
对于给出的代码的简洁性,我深表歉意,这是出于安全原因。我基本上是在插入/更新/更新它之前尝试设置 acc 的 ID。我感谢任何解释为什么它可以附加“IAR”和/或在给定输入 AccountId 的情况下更新记录的任何替代方法。我明白,如果您将 id 作为 URL 变量传递,SalesForce 将自动为您执行此操作。但是,我向页面传递了多个变量,因为存在三个单独的用例。
谢谢你的帮助。