我有一个奇怪的问题,并希望有人可以解释它为什么会发生。如果我使用以下方法使用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。)
答案 0 :(得分:2)
嗯,这可能不是一个如何解决这个问题的答案,但我想我可以解释为什么会发生这种情况。 对于activitypointer的状态代码,fetchXML获取整数值并将其映射到activitypointer查找表,而SQL将其映射到实际的子实体表。
例如,记下您的第一条记录,恰好是一封电子邮件。 FetchXML表示状态为“已取消”。检查activitypointer元数据(http://msdn.microsoft.com/en-us/library/gg328148.aspx),我们看到“已取消”是值“3”。现在,转到电子邮件实体元数据(http://msdn.microsoft.com/en-us/library/hh155312.aspx),我们看到值“3”实际上是“已发送”,这就是SQL所说的。
这适用于表中的所有实体。例如,没有fetchXML状态的孤独任务实际上是根据sql完成的。这是值“5”(http://msdn.microsoft.com/en-us/library/gg594424.aspx),它不会映射到活动指针的任何内容;它们的值限制在1-4的范围内。结果,fetchXML什么也没显示。
尝试获取statuscodeValue而不是name。我希望fetchXML和SQL的整数值都是相同的。为什么他们以不同的方式映射名称我无法回答。