方案:我在Dynamics CRM中的订单类型上有一个文本字段。该字段与其他一些系统集成在一起,它将仅接受已经声明的值列表;例如ABC,IJK,XYZ等。现在,我可以使用“高级查找”查询此字段是否包含数据。
现在在报告中,我有一个参数,该参数具有所有可能的值以及一个附加值,例如“不包含数据”,其值为空字符串。我还启用了此报告参数以进行多选。但是,如果从报表参数中选择任何值,我将无法获得订单。
下面是我的FetchXML查询,请让我知道下面缺少的内容。
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="invoicedetail">
<attribute name="productid" />
<attribute name="invoicedetailid" />
<attribute name="tv_ordertype" />
<order attribute="productid" descending="false" />
<filter type="and">
<condition attribute="tv_ordertype" operator="in" value="@Order_Types" />
</filter>
</entity>
</fetch>
答案 0 :(得分:0)
不幸的是,您不能将值(“ ABC”,“ IJK”,“ XYZ”)与空字符串选项结合使用。考虑一下SSRS如何将空字符串解析为FetchXml:
<condition attribute="tv_ordertype" operator="in" value="" />
由于in
运算符具有空字符串,因此将没有匹配的结果。
一种可行的方法是将FetchXml更改为使用or
过滤器,例如
<filter type="or">
<condition attribute="tv_ordertype" operator="null" />
<condition attribute="tv_ordertype" operator="in" value="@Order_Types" />
</filter>
这现在将返回CRM中与您的条件匹配的所有值,或者返回空的tv_ordertype
然后,您可以在tablix /报告级别应用其他过滤
答案 1 :(得分:-1)
尝试以下类似方法
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="invoicedetail">
<attribute name="productid" />
<attribute name="invoicedetailid" />
<attribute name="tv_ordertype" />
<order attribute="productid" descending="false" />
<filter type='and'>
<condition attribute="tv_ordertype" operator="in" value="@Order_Types" />
</filter>
</entity>
</fetch>
答案 2 :(得分:-1)
您的提取XML应该如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="invoicedetail">
<attribute name="productid" />
<attribute name="invoicedetailid" />
<attribute name="tv_ordertype" />
<order attribute="productid" descending="false" />
<filter type="and">
<condition attribute="tv_ordertype" operator="in"/>
<value>@Order_Types[0]</value>
<value>@Order_Types[1]</value>
<!-- etc -->
</condition>
</filter>
</entity>
</fetch>