Dynamic CRM 2013學習筆記(十五)報表設計:報表入門、開發工具及注意事項


本文是關於CRM 2013報表開發入門介紹,包括開發工具的使用,以及不同於普通Reporting service的相關注意事項。

 

一、CRM報表簡介

報表有兩種,SQL-based報表和Fetch-based報表,區別如下:

區域 SQL-based 報表 Fetch-based 報表
Data Provider

<DataProvider> 元素的值設置為SQL. 示例如下:<DataProvider>SQL</DataProvider>

報表RDL文件中的 <DataProvider> 元素的值設置為MSCRMFETCH. 示例如下:<DataProvider>MSCRMFETCH</D

taProvider>

Report query

報表RDL文件中的<Query>元素下<CommandText>子元素獲取數據用的查詢語句是一個SQL查詢語句。比如下面這個SQL語句就是查詢所有客戶的name列:<CommandText>SELECT name FROM FilteredAccount;</CommandText>

報表RDL文件中的<Query>元素下<CommandText>子元素獲取數據用的查詢語句是一個SQL查詢語句。比如下面這個查詢語句就是查詢所有客戶的name列:<CommandText>&lt;fetch version="1.0" output-format="xml-platform" mapping="logical"&gt;

    &lt;entity name="account"&gt;

        &lt;attribute name="name" /&gt;

    &lt;/entity&gt;

&lt;/fetch&gt;</CommandText>

部署范圍 僅能部署到on-premises Microsoft Dynamics CRM 能部署到Microsoft Dynamics CRM Online 和on-premises Microsoft Dynamics CRM

 

創建SQL-based報表只能使用系統中的Filtered Views,自定義的實體也會自動創建和更新其對應的Filtered View,一般命名規則是Filtered 加上實體的架構名稱,比如客戶Account實體對應的Filtered view便是FilteredAccount。可以直接到名稱為 <organization_name>_MSCRM 的數據庫的View節點中去查看視圖的定義,數據等等。Filtered Views會自動應用安全性,通過該視圖查看數據只能看到你能看到的數據。對Filtered Views的說明如下:

1. 所有的視圖列名都是小寫的。

2. 對於數據類型是選項集的列,Filtered Views會有兩列和這樣的列對應,一個列是這個選項集的值,一個列是這個選項集的顯示文本。比如潛在客戶lead這個實體的屬性LeadSource數據類型是選項集,Filtered Views會有leadsource列來對應選項集的值,leadsourcename列來對應選項集的顯示文本。

3. 對於數據類型是DateTime的列。Filtered Views會有兩列和這樣的列對應,一個列對應顯示適合於你的時區的日期時間,另一個列對應的是UTC時間,一般會加上utc。比如記錄創建時間字段createdon就記載的是適合你看的時間,我們默認是東八區,而createdonutc則是記載的是UTC時間,是東八區的時間減去8個小時。

 

二、 開發工具

1. 我們以前開發報表是用的Business Intelligence Development Studio,但SQL Server 2012里沒有這個了,取而代之的是SQL Server Data Tools,實際上也是在vs里做開發:

image

2. 另外還可以用 Microsoft® SQL Server® 2012 報表生成器 來開發報表:

image

 

三、 注意事項

下面就一個最簡單的例子介紹下開發CRM報表時要注意的地方:

1. 首先建立一個數據源:

image

 

2. 建立dataset:

image

 

3. 注意事項:

SELECT TOP 1
          u.FullName ,
          mad.new_rate
FROM      dbo.Filterednew_material_apply_order CRMAF_ma
          JOIN dbo.Filterednew_material_apply_details mad ON CRMAF_ma.new_material_apply_orderId = mad.new_material_apply_order
          LEFT JOIN dbo.FilteredSystemUser u ON CRMAF_ma.CreatedBy = u.SystemUserId
   

 

 

 

 

  • 這里的sql 語句用到的是filtered view,所以都是以Filtered開頭的, 上段代碼中標紅色的地方
  • 其中主視圖的別名是以CRMAF_開頭,標藍色的地方,這里表示只取當前數據行
  • 用上面的sql語句,你會發現沒有數據出來,因為這時你沒指定是哪個用戶,為了測試,我們可以在這段sql之前,加上下面的語句以指定是哪個用戶:

 

DECLARE @binUserGuid VARBINARY(128)
DECLARE @userGuid UNIQUEIDENTIFIER
SELECT   @userGuid = ( SELECT TOP 1
                                 SystemUserId
                       FROM      SystemUser
                       WHERE     DomainName = 'CRM\123456'
                     )
SET @binUserGuid = CAST(@userGuid AS VARBINARY(128)) 
SET context_info @binUserGuid 
注意把上面的CRM\123456換成你想要的用戶名;另外測試完沒問題后,記得把它去掉,再發布到CRM系統中。
 
Dynamic CRM 2013學習筆記 系列匯總
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM