我刚开始使用fetchxml和dynamics 365(v9)...
因此,我有一个Dynamics 365计划服务,需要将其分成较小的块。但是,在为每个计划构建fetchxml查询时,我发现总和没有加起来。
未过滤帐户名的整个查询为1158。
但是当使用条件(如下)时,当我将所有结果加起来时,我仍然短缺37个帐户。
<!-- this query Returns 1158 account objects. -->
<fetch distinct="true">
<entity name="account" >
<attribute name="name" />
<attribute name="accountid" />
<filter type="and" >
<condition attribute="accounttype" operator="in" >
<value>1</value>
<value>2</value>
</condition>
<condition attribute="statuscode" operator="eq" value="1" />
</filter>
<link-entity name="account" from="parentaccountid" to="accountid" link-type="inner" >
<filter type="or" >
<condition attribute="statuscode" operator="eq" value="403310000" />
<condition attribute="statuscode" operator="eq" value="403310007" />
</filter>
</link-entity>
</entity>
</fetch>
我分解了过滤器,只包含以两个字母开头的帐户名称,然后重复此操作,直到覆盖了整个字母。
<filter type="and" >
<condition attribute="name" operator="gt" value="a" />
<condition attribute="name" operator="lt" value="i" />
</filter>
<filter type="and" >
<condition attribute="name" operator="gt" value="j" />
<condition attribute="name" operator="lt" value="q" />
</filter>
<filter type="and" >
<condition attribute="name" operator="gt" value="r" />
<condition attribute="name" operator="lt" value="z" />
</filter>
然后我发现我还需要添加数字...足够公平...
<filter type="and" >
<condition attribute="name" operator="gt" value="0" />
<condition attribute="name" operator="lt" value="9" />
</filter>
所有这些查询加起来为1121,仍然短了37。
所以,我认为我一定犯错了,应该在上面的过滤器中使用'ge'和'le',我得到的结果完全相同。
<filter type="and" >
<condition attribute="name" operator="ge" value="s1" />
<condition attribute="name" operator="le" value="s2" />
</filter>
通过这种方法,我还应该使用其他哪些过滤器来检索整个集合?
不应该使用“较少平等”和“更大平等”的工作,并包括当前字母给我的全部吗?
编辑1:在Guido的建议之后:
结果仅比总数少5。如此接近!
<filter type="or" >
<filter type="and" >
<condition attribute="name" operator="ge" value="a" />
<condition attribute="name" operator="le" value="z" />
</filter>
<filter type="and" >
<condition attribute="name" operator="ge" value="0" />
<condition attribute="name" operator="le" value="9" />
</filter>
<!-- adding this extra condition almost finds the entire results 5 short -->
<filter type="and" >
<condition attribute="name" operator="gt" value="a" />
<condition attribute="name" operator="lt" value="z" />
</filter>
<filter type="and" >
<condition attribute="name" operator="ge" value=" " />
<condition attribute="name" operator="le" value="~" />
</filter>
</filter>
编辑2:已更正。感谢Guido。这可行。检索所有帐户。
<filter type="or" >
<filter type="and" >
<condition attribute="name" operator="le" value="a" />
</filter>
<filter type="and" >
<condition attribute="name" operator="gt" value="a" />
<condition attribute="name" operator="lt" value="z" />
</filter>
<filter type="and" >
<condition attribute="name" operator="ge" value="z" />
</filter>
</filter>
下一步是使用此方法将结果分成较小的块...
答案 0 :(得分:0)
如果您需要将结果分成较小的块,建议使用分页。
您可以通过在查询的count
节点上设置属性page
和fetch
来添加页面大小和要检索的页面。
<fetch count='5' page='1' distinct='true' >
在结果中,您可以查找属性morerecords
,以查看是否应该继续查询下一页。