嘿salesforce专家,

我有效地有一个关于查询帐户信息的问题。我想根据ActivityHistory对象中的更新查询帐户。我得到的问题是,无论是“完整”的Activehistory,无论是否有“完整”,就会检索所有帐户。所以,有没有办法写入这个查询,只能使用具有status=“完成”和type_for_reporting='qrc'的activehistory来检索与activehistory的帐户只能检索

List<Account> AccountsWithActivityHistories = [    
    SELECT
         Id
        ,Name
        ,( SELECT
                ActivityDate
               ,ActivityType
               ,Type_for_Reporting__c
               ,Description
               ,CreatedBy.Name
               ,Status
               ,WhatId
            FROM ActivityHistories
            WHERE Status ='complete'  and Type_for_Reporting__c = 'QRC'
        )
    FROM Account
];
.

有帮助吗?

解决方案

您在历史上有一个where子句,但您仍然错过了一个帐户级别。

例如,这将仅返回具有联系人的帐户:

SELECT Id, Name
FROM Account
WHERE Id IN (SELECT AccountId FROM Contact) // try with NOT IN too
.


活动是棘手的,因为他们不喜欢以这种方式在哪里使用。

http://www.salesforce.com/us/开发人员/文档/ officeToolkit / content / sforce_api_calls_soql_select.htm

  • activityhistory
  • 附件
  • 事件
  • Eventattendee
  • 注意
  • 开放性
  • 标签(accounttag,contacttag和所有其他标记对象)
  • 任务

另外,活动何中定义也有点令人沮丧。

对没有“查看所有数据”权限的用户的限制有助于防止性能问题:

  • 在关系查询的主子句中,您只能引用 一个记录。例如,您无法过滤所有记录 帐户名称以“a”开头;相反,您必须引用单个 帐户记录。
  • 你不能使用条款。
  • 您必须在列表中返回的行数中指定499或更少的限制。
  • 您必须按升序顺序排序ActivityDate和LastModifiedDate以降序;您可以持续显示空值。为了 示例:通过ActivityDate ASC NULL顺序,LastModifiedDate DESC。

看起来你需要多个查询。转到任务(或事件,根据自定义字段可见的事件),撰写一组考核,然后查询帐户?

或者您可以通过原始查询手动过滤列表,将帐户复制到帮助者列表:

List<Account> finalResults = new List<Account>();
for(Account a : [SELECT...]){
    if(!a.ActivityHistories.isEmpty()){
        finalResults.add(a);
    }
}
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top