这是一个与APEX代码相关的问题,特定于VisualForce控制器类。
问题
我正在尝试使用已知的AccountId更新记录。但是,当我在sObject声明中设置ID时,SalesForce会将字符串“IAR”附加到ID的末尾!
有人可以让我知道我在做什么是错的,如果我以错误的方式解决这个问题,而不是从自定义方法更新记录的正确方法,在quicksave()或更新之外( )。
描述
所以基本上,用户将使用编码的id来到此页面,它将具有id或级别。这是由函数decode()处理的,它接受一个字符串; “id”/“level”。然后我创建一个帐户变量“acc”,它将用于存储所有帐户信息,然后我们插入或使用语句“insert acc;”更新它。因为,我不能用“acc.id = salesForceID”设置“acc”的ID我决定在创建“acc”时设置它。当声明“acc”变量时,构造函数中会出现以下APEX代码。
网址变量已通过
/应用?ID = 001Q000000OognA
APEX控制器类(摘要)
salesForceID = decode('id');
debug1 = 'salesForceID: ' + salesForceID;
acc = new Account(id = salesForceID);
debug2 = 'Account ID: ' + acc.id;
调试输出
salesForceID:001Q000000OognA
帐户ID:001Q000000OognAIAR
评论
我为了给出的代码的简洁而道歉,这是出于安全原因。我基本上是在插入/ upsert /更新之前设置acc的ID。我感谢任何解释为什么它可以附加“IAR”和/或任何替代方法来更新给定输入AccountId的记录。我明白如果你将id作为URL变量传递,SalesForce会自动为你做这个。但是,我将多个变量传递给页面,因为有三个单独的用例。
感谢您的帮助。
答案 0 :(得分:4)
001Q000000OognA是“标准”15个字符的Salesforce ID。 15个字符的ID区分大小写。
001Q000000OognAIAR是该ID的不区分大小写的18个字符的版本。
任何一个都没问题。您无需担心差异。如果由于某种原因你真的需要在参数等中使用15个字符的版本,你可以安全地截断最后3个数字。
此处提供更多信息:http://www.salesforce.com/us/developer/docs/api/Content/field_types.htm