1

我遇到了一个奇怪的问题,并希望有人能阐明它发生的原因。如果我使用以下方法使用 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>

然后我得到以下一组结果:

模糊 1

但是,如果我在 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

然后我得到以下结果:

模糊 2

您可以看到结果几乎相同,但是如果您查看状态代码列,那么您会发现结果不同,因为一个声明已发送,而另一个声明已完成。

因此,当两种不同的方法似乎为状态代码带来不同的结果时,如何根据项目的状态进行过滤?

(我目前正在尝试使用 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 中将结果连接在一起。)

4

1 回答 1

2

好吧,这也许不是关于如何解决这个问题的答案,但我想我可以阐明它为什么会发生。对于活动指针的状态码,fetchXML 获取整数值并将其映射到活动指针查找表,而 SQL 将其映射到实际子实体的表。

例如,获取您的第一条记录,它恰好是一封电子邮件。FetchXML 表示状态为“已取消”。检查活动指针元数据(http://msdn.microsoft.com/en-us/library/gg328148.aspx)我们看到“取消”是值“3”。现在,转到电子邮件实体元数据 ( http://msdn.microsoft.com/en-us/library/hh155312.aspx ),我们看到值“3”实际上是“已发送”,这就是 SQL 所说的。

这适用于表中的所有实体。比如没有fetchXML状态的孤独Task,其实是按照sql完成的。那是值“5”(http://msdn.microsoft.com/en-us/library/gg594424.aspx),它不会映射到活动指针的任何内容;它们的值限制在 1-4 的范围内。结果,fetchXML 什么也没有显示。

尝试获取 statuscodeValue 而不是名称。我希望 fetchXML 和 SQL 的整数值是相同的。为什么他们以不同的方式映射名称我无法回答。

于 2013-06-17T16:57:55.600 回答