MS CRM 2011 如何创建基于SQL的自定义报表,并使用数据预筛选(Pre-Filtering)
原创地址:http://www.cnblogs.com/jfzhu/archive/2012/10/03/2711123.html
转载请注明出处
在本文中我将介绍如何使用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的属性:
(3)接下来在Report Data面板中添加一个新的Data Set。使用以下的Query为: SELECT name, estimatedclosedate, estimatedvalue FROM FilteredOpportunity
(4) 在报表中添加一个table,如下图所示:
(5)到这里,一个自定义报表基本上就创建好了。我们可以把它上传到CRM中看一看结果。
上传之后,你会发现,不论你在哪运行这个报表,这个报表都返回所有的opportutnity,不具有数据预筛选功能,所以我们要对报表进行修改。
(6) 要开启数据预筛选功能,需要使用一个CRM系统参数 CRM_FilteredEntity。当然Entity在我们的报表中是Opportunity。
在Report Data面板中添加一个参数:
(7) 更改Dataset 的属性: 首先添加一个参数
(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 参数的值显示在里边。
(10)要注意,先在CRM中删除原来的报表,然后再重新上传,不然CRM是不知道我们启用了数据预筛选功能的。
(11) 这回当我们在opportunity的grid中运行报表时,我们看到数据预筛选功能开启了:
(12)但是当我们运行报表后,发现CRM_FilteredOpportunity 参数的值有点奇怪。其中多了一条,大概的意思是说,在最近的30天内有修改过的opportunity。
那么这个“最近30天修改过的”筛选条件是从哪来的,并在哪修改呢?
(13)原来在CRM中,我们的报表被设置了默认的Filter,我们可以在报表的grid中选中我们的报表,然后点击Edit Default Editor来进行修改。
(14)删除掉 Modified On Last X Days 30, 并保存就可以了。
(15) 在运行一次试试:
在本文中,我向大家介绍了如何创建基于SQL的自定义报表,并且使用数据预筛选(Pre-Filtering)的功能。在下一篇文章中,我会向大家演示如何创建基于Fetch的报表,并开启数据预筛选功能的。