VisualForce(APEX):使用已知ID更新记录

时间:2011-07-14 04:32:06

标签: salesforce apex-code visualforce

这是一个与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会自动为你做这个。但是,我将多个变量传递给页面,因为有三个单独的用例。

感谢您的帮助。

1 个答案:

答案 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