CRM 4.0 - 有没有办法知道特定营销列表中的联系人是否响应了广告系列?

时间:2011-03-03 14:28:45

标签: dynamics-crm-4

我想知道如何对MS CRM 4.0进行以下操作: 如果来自特定营销列表的联系人尚未回复,我想知道广告系列。

广告系列响应表单中的字段自定义是partyfield。 CRM不允许使用QueryExpression

查询PartyList字段

有什么想法吗?

谢谢,
卡佳

1 个答案:

答案 0 :(得分:2)

您无法直接检索activityparty记录,但可以在LinkEntities中使用它们:

private bool contactHasResponded(Guid idCampaign, Guid idContact)
{
    QueryExpression qryCampaignResponses = new QueryExpression("campaignresponse");
    qryCampaignResponses.ColumnSet = new AllColumns();

    qryCampaignResponses.Criteria = new FilterExpression();
    qryCampaignResponses.Criteria.AddCondition("regardingobjectid", ConditionOperator.Equal, idCampaign);

    LinkEntity leContact = new LinkEntity("campaignresponse", "activityparty", "activityid", "activityid", JoinOperator.Inner);
    leContact.LinkCriteria = new FilterExpression();
    leContact.LinkCriteria.AddCondition("partyid", ConditionOperator.Equal, idContact);

    qryCampaignResponses.LinkEntities.Add(leContact);

    List<gcCampaignresponse> lstCampaignResponses = gcCampaignresponse.RetrieveMultiple(m_svcCrm, qryCampaignResponses);

    return (lstCampaignResponses.Count > 0);
}

这将告诉您是否有针对特定广告系列和联系人的广告系列响应。 (我使用Stunnware Tools生成的实体类,因此RetrieveMultiple调用看起来有点不同,但我认为你明白我的意思。)

如果您将此QueryExpression / LinkEntity构造颠倒过来,您还可以获取已响应给定广告系列的所有联系人(您也可以通过第二个LinkEntity将其限制为某个营销列表中的联系人)。

唯一不可能直接使用单个查询的是您正在寻找的“否定”支票,因此您必须获取此结果并对您的营销列表执行“外部联接”以获取联系人有回复。