我遇到了一个奇怪的问题,并希望有人能阐明它发生的原因。如果我使用以下方法使用 FetchXML 查询动态:
<fetch mapping="logical" count="10" distinct="true" version="1.0">
<entity name="activitypointer">
<attribute name="activityid" />
<attribute name="activitytypecode" />
<attribute name="createdon" />
<attribute name="ownerid" />
<attribute name="statecode" />
<attribute name="statuscode" />
<attribute name="subject" />
<attribute name="actualend" />
<order attribute="actualend" descending="true" />
<filter type="or">
<condition attribute="regardingobjectid" operator="eq" value="66431c2f-fab6-dd11-94f2-0014221f6f5c" />
</filter>
</entity>
然后我得到以下一组结果:
但是,如果我在 SQL 中执行相同的查询:
SELECT TOP 100 activityid, activitytypecodename, createdon, owneridname, statecodename, statuscodename, subject, actualend FROM [CRM2011_MSCRM].[dbo].[FilteredActivityPointer] WHERE regardingobjectid = '66431C2F-FAB6-DD11-94F2-0014221F6F5C' ORDER BY actualend DESC
然后我得到以下结果:
您可以看到结果几乎相同,但是如果您查看状态代码列,那么您会发现结果不同,因为一个声明已发送,而另一个声明已完成。
因此,当两种不同的方法似乎为状态代码带来不同的结果时,如何根据项目的状态进行过滤?
(我目前正在尝试使用 FetchXML 在 SSRS 中进行报告,我之前曾尝试在 SQL 中进行此操作但遇到了问题,因此使用 FetchXML 来解决此问题)
- 编辑
当我使用约会实体时,我确实得到了正确的结果:
<fetch mapping="logical" count="50" version="1.0">
<entity name="appointment">
<attribute name="activityid" />
<attribute name="activitytypecode" />
<attribute name="actualend" />
<attribute name="createdon" />
<attribute name="ownerid" />
<attribute name="statecode" />
<attribute name="statuscode" />
<attribute name="subject" />
<filter>
<condition attribute="regardingobjectid" operator="eq" value="66431c2f-fab6-dd11-94f2-0014221f6f5c" />
</filter>
</entity>
这会返回:
唯一的问题是我需要知道整个不同活动列表的状态 - 因此我认为你需要使用活动指针(因为它是基类,而且你不能在 SSRS 中将结果连接在一起。)