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学习笔记 系列汇总
 
 
posted @ 2014-10-26 09:19  疯吻IT  阅读(5901)  评论(3编辑  收藏  举报