我想知道如何对MS CRM 4.0进行以下操作: 如果来自特定营销列表的联系人尚未回复,我想知道广告系列。
广告系列响应表单中的字段自定义是partyfield。 CRM不允许使用QueryExpression
查询PartyList字段有什么想法吗?
谢谢,
卡佳
答案 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将其限制为某个营销列表中的联系人)。
唯一不可能直接使用单个查询的是您正在寻找的“否定”支票,因此您必须获取此结果并对您的营销列表执行“外部联接”以获取联系人有不回复。