【问题标题】:Get Contact Emails of Currently Active Account as List获取当前活动帐户的联系人电子邮件作为列表
【发布时间】:2018-03-11 14:01:34
【问题描述】:

假设:Salesforce 用户正在查看帐户页面。

期望的输出:与当前被视为列表对象的帐户相关的联系人的所有电子邮件。

我的代码:

SELECT Email FROM Contact WHERE Id IN (SELECT ContactId FROM AccountContactRelation WHERE AccountId = ApexPages.CurrentPage.getParameters().get('id'))

这不会检索任何结果。当使用固定号码而不是ApexPages.CurrentPage.getParameters().get('id') 时,电子邮件会正确返回。

我对 Apex 有点陌生。谁能指出我做错了什么?

【问题讨论】:

    标签: salesforce apex apex-code soql salesforce-lightning


    【解决方案1】:

    要获得所需的输出,您需要使用 SOQL 变量注入。

    您可以先创建一个变量,然后使用: 和变量名在 SOQL 中引用该变量:

    String theAccountId = ApexPages.CurrentPage.getParameters().get('id');
    List<Contact> theContacts = [SELECT Email FROM Contact WHERE Id IN (SELECT ContactId FROM AccountContactRelation WHERE AccountId = :theAccountId)];
    

    【讨论】:

      【解决方案2】:

      您可以使用带有绑定变量的静态查询来检索正确的结果。

      此外,Contact 对象包含自己的 AccountId 字段。因此,根据您的设置,您可能能够消除子查询。您可能还想过滤掉空的 Email 字段,因为 Email 不是必填字段。

      完整的结果可能如下所示:

      String accountId = ApexPages.CurrentPage.getParameters().get('id');
      
      List<Contact> accountContactsEmailList = [
        SELECT
          Email
        FROM
          Contact
        WHERE
          Email != ''
          AND AccountId = :accountId
      ];
      
      for (Contact contact : accountContactsEmailList) {
        System.debug(contact.Email);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-12
        • 1970-01-01
        相关资源
        最近更新 更多