【问题标题】:VisualForce(APEX): Update record with known IDVisualForce(APEX):使用已知 ID 更新记录
【发布时间】:2011-07-14 04:32:06
【问题描述】:

这是一个与 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”变量时出现在构造函数中。

网址变量已通过
/application?id=001Q000000OognA

APEX 控制器类(精简版)

salesForceID = decode('id');
debug1       = 'salesForceID: ' + salesForceID;

acc          = new Account(id = salesForceID);
debug2       = 'Account ID: ' + acc.id;

调试输出
salesForceID:001Q000000OognA
账号ID:001Q000000OognAIAR

评论
对于给出的代码的简洁性,我深表歉意,这是出于安全原因。我基本上是在插入/更新/更新它之前尝试设置 acc 的 ID。我感谢任何解释为什么它可以附加“IAR”和/或在给定输入 AccountId 的情况下更新记录的任何替代方法。我明白,如果您将 id 作为 URL 变量传递,SalesForce 将自动为您执行此操作。但是,我向页面传递了多个变量,因为存在三个不同的用例。

感谢您的帮助。

【问题讨论】:

    标签: salesforce apex-code visualforce


    【解决方案1】:

    001Q000000OognA 是“标准”的 15 个字符的 Salesforce ID。 15 个字符的 ID 区分大小写。

    001Q000000OognAIAR 是该 ID 的不区分大小写的 18 个字符版本。

    任何一个都可以。您无需担心差异。如果由于某种原因您确实需要在参数等中使用 15 个字符的版本,您可以安全地截断最后 3 位数字。

    更多信息在这里:http://www.salesforce.com/us/developer/docs/api/Content/field_types.htm

    【讨论】:

    • 感谢 jkraybill 的及时回复 :)
    猜你喜欢
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多