MS CRM 2011 如何创建基于SQL的自定义报表,并使用数据预筛选(Pre-Filtering)

在本文中我将介绍如何使用Business Intelligence Development Studio来创建一个自定义报表。CRM的报表有两种,基于SQL和基于Fetch的。On-Premise两种都可以使用,而Online只可以使用Fetch的报表。下面我就介绍一下如何创建基于SQL的的报表,并且在报表中使用数据预筛选。所谓数据预筛选是指,你可以在grid中选择一条或几条数据,然后基于你的选择的数据运行报表,或者你也可以在表单中运行这基于该表单数据的报表。

 

(1) 打开Business Intelligence Development Studio,创建一个新的report server 项目;

(2) 在项目管理器中,右键单击Reports文件夹,添加新项目,选择report;

  在Report Data面板中,选择New –> Data Source

  完成Data Source的属性:

image

image

(3)接下来在Report Data面板中添加一个新的Data Set。使用以下的Query为: SELECT name, estimatedclosedate, estimatedvalue FROM FilteredOpportunity

image

(4) 在报表中添加一个table,如下图所示:

image

(5)到这里,一个自定义报表基本上就创建好了。我们可以把它上传到CRM中看一看结果。

image

上传之后,你会发现,不论你在哪运行这个报表,这个报表都返回所有的opportutnity,不具有数据预筛选功能,所以我们要对报表进行修改。

 

(6) 要开启数据预筛选功能,需要使用一个CRM系统参数 CRM_FilteredEntity。当然Entity在我们的报表中是Opportunity

在Report Data面板中添加一个参数:

image

image

image

image

(7) 更改Dataset 的属性: 首先添加一个参数

image

(8) 然后更改Query

declare @sql as nVarchar(max)

set @sql = ' 
SELECT name, estimatedclosedate, estimatedvalue 
FROM (' + @CRM_FilteredOpportunity + ') as fo'

exec(@sql)

 

(9) 为了方便大家理解参数CRM_FilteredOpportunity 的工作原理,我们在报表中添加一个Textbox,把CRM_FilteredOpportunity 参数的值显示在里边。

image

(10)要注意,先在CRM中删除原来的报表,然后再重新上传,不然CRM是不知道我们启用了数据预筛选功能的。

(11) 这回当我们在opportunity的grid中运行报表时,我们看到数据预筛选功能开启了:

image

(12)但是当我们运行报表后,发现CRM_FilteredOpportunity 参数的值有点奇怪。其中多了一条,大概的意思是说,在最近的30天内有修改过的opportunity。

那么这个“最近30天修改过的”筛选条件是从哪来的,并在哪修改呢?

image

(13)原来在CRM中,我们的报表被设置了默认的Filter,我们可以在报表的grid中选中我们的报表,然后点击Edit Default Editor来进行修改。

image

(14)删除掉 Modified On Last X Days 30, 并保存就可以了。

image

(15) 在运行一次试试:

image

 

在本文中,我向大家介绍了如何创建基于SQL的自定义报表,并且使用数据预筛选(Pre-Filtering)的功能。在下一篇文章中,我会向大家演示如何创建基于Fetch的报表,并开启数据预筛选功能的。







本文转自JF Zhu博客园博客,原文链接: http://www.cnblogs.com/jfzhu/archive/2012/10/03/2711123.html   ,如需转载请自行联系原作者