今天給大家分享一篇關於制作報表的文章,今天我們不用SQL來做報表,我們用FetchXML來做。這次我們的測試環境是Dynamics CRM Online,大家應該知道,Dynamics CRM Online只能部署基於FetchXML制作的SSRS報表。
既然說到了高級報表,那肯定是有它的賣點:這裡的高級是指,我們的報表可以通過CRM 高級查找界面去定義數據源,不像普通的SSRS報表,數據源都是固定的不能變更。
下面給大家說下我們這個報表的應用場景:
客戶和銷售記錄是1對多關系,但是很多情況下,客戶記錄下面卻是了銷售記錄,這樣的髒數據會導致很多系統問題,所以我們想要找一個辦法把所有缺少銷售數據的客戶記錄列出來。
解決思路也是很簡單的,我們只需要對客戶和銷售數據做一個左連接,就可以輕松的把缺少銷售數據的客戶記錄拉出來了。既然思路確定了,我們就開始制作高級報表吧:
首先是要SQL Server Tool創建一個報表項目,然後添加一個空白報表,並為其添加數據源
為其添加一個parameter,這個參數主要用來實現的‘高級’功能--是要高級查找界面定義數據源
為Parameter命令,這裡的命名規則是固定的,需要遵從CRM_FilteredXXXXX規律,例如:CRM_FilteredAccount,後面需要接主記錄的視圖名稱,這裡我們的主記錄是Acount,主要Account的首字母要大寫。
為Parameter指定默認值,我們這裡默認為所有客戶記錄,大家可以根據自己的情況而定
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"> <entity name="account"> <all-attributes> </all-attributes></entity> </fetch>
配置數據集合,我們這裡使用了如下的FetchXML:
<fetch distinct="true"> <entity name="account" enableprefiltering="1" prefilterparametername="CRM_FilteredAccount"> <attribute name="accountid"> <attribute name="accountnumber"> <attribute name="name"> <link-entity name="p_csd" from="p_customer" to="accountid" alias="csd" link-type="outer"> <attribute name="p_csdid"> <filter type="and"> <condition entityname="csd" attribute="po_csdid" operator="null"></condition> </filter> </attribute></link-entity></attribute></attribute></attribute></entity><link-entity name="p_csd" from="p_customer" to="accountid" alias="csd" link-type="outer"> </link-entity></fetch>