time 
设为首页】【收藏本站
当前位置: 主页 > ERP > CRM > 【Dynamics CRM报表开发】3、创建基于SQL报表

【Dynamics CRM报表开发】3、创建基于SQL报表

时间:2014-10-17 15:41 点击:531次 字体:[ ]




注意,基于SQL的报表只能应用于On-Premise的CRM中,不能应用于Online版本的CRM中。

参考网址是: http://www.fengfly.com/plus/view-209924-1.html

原文没有提到自动预筛选,那个部分是我补充的。

本例中和创建基于FetchXML的报表相同的步骤就从略叙述了。

1.       新建报表项目。打开SQL Server Business Intelligence Development Studio,点击 文件 > 新建 > 项目,项目类型选择 商业智能项目 中的 报表服务器项目,为该项目命个名字。

2.       添加报表,我这里命名为 OppSQLReport.rdl 。

        3.  添加数据源。类型要选择 Microsoft SQL Server,点击连接字符串旁边的 编辑 按钮,在弹出的连接属性对话框中,在服务器名称中输入SQL Server所在的服务器名称,登录到服务器使用默认的 使用Windows 身份验证,连接到一个数据库则选择你要发布到到的组织对应的数据库,一般是组织名称加上下划线在加上MSCRM。然后点击 确定 按钮就会自动生成连接字符串。在数据源的凭据中则保持第一个选项 使用Windows身份验证不变。

【Dynamics CRM报表开发】3、创建基于SQL报表_www.fengfly.com
 
【Dynamics CRM报表开发】3、创建基于SQL报表_www.fengfly.com
 
【Dynamics CRM报表开发】3、创建基于SQL报表_www.fengfly.com
 
 4.  添加数据集。右击刚才添加的数据源,选择 添加数据集 ,在 查询下面的文本框中输入你准备好的SQL语句,我这里是输入 SELECT name, estimatedclosedate, estimatedvalue FROM FilteredOpportunity 。然后点击本对话框的确定按钮。 
【Dynamics CRM报表开发】3、创建基于SQL报表_www.fengfly.com
  
5.  制作报表。从工具箱中拖动出来一个表,将三列拖动到表中,并且预览下没有问题。
【Dynamics CRM报表开发】3、创建基于SQL报表_www.fengfly.com
 
6.  为报表启用预筛选。因为这个是很简单的报表,我就用一种简单的办法来启用预筛选。就是SDK中说的 Automatic Pre-Filtering 方法。双击数据集,将FilteredOpportunity后面增加 AS CRMAF_FilteredOpportunity,如下图所示,然后点击确定。这个命名有讲究,就是要以 CRMAF_ 开头。
【Dynamics CRM报表开发】3、创建基于SQL报表_www.fengfly.com
 
7. 发布报表。导航到 工作区 > 报表,设置属性如下图所示。然后点击保存并关闭按钮。
 
【Dynamics CRM报表开发】3、创建基于SQL报表_www.fengfly.com
 
8. 测试报表。到 销售 > 商机 界面,选择一些记录,点击 运行报表 ,一会儿报表效果如下图所示,我后来为报表加了饼状图。
 
【Dynamics CRM报表开发】3、创建基于SQL报表_www.fengfly.com
 
【Dynamics CRM报表开发】3、创建基于SQL报表_www.fengfly.com
 
9.  使用显式预筛选。因为自动预筛选有些局限性,仅限于简单的报表,所以我这里也说明一下显示预筛选。显式开启预筛选功能,需要用到一个CRM参数CRM_FilteredEntity,因为是针对Opportunity实体,所以这个参数名称应该名为为CRM_FilteredOpportunity。增加的参数属性如下,除了名称外,最好将选择参数可见性更改为隐藏。将其默认值设置为 select FilteredOpportunity0.* from FilteredOpportunity as FilteredOpportunity0 。当然,不要在查询语句中使用 * ,一般应该指明要使用的查询列名,我这里是演示,所以从简了,也可以使用 select name, estimatedclosedate, estimatedvalue from FilteredOpportunity 更好。
 
【Dynamics CRM报表开发】3、创建基于SQL报表_www.fengfly.com
 
【Dynamics CRM报表开发】3、创建基于SQL报表_www.fengfly.com
  
10. 增加参数。更改数据集的属性,双击它,增加一个参数,名称为 @CRM_FilteredOpportunity ,值为 [@CRM_FilteredOpportunity] ,并将查询的SQL更改为类似如下:这样就完成使用显示预筛选的更改了。

DECLARE @SQL NVARCHAR(4000);

SET @SQL = 'SELECT name, estimatedclosedate, estimatedvalue FROM (' + @CRM_FilteredOpportunity + ') AS Filtered';

EXEC(@SQL);

【Dynamics CRM报表开发】3、创建基于SQL报表_www.fengfly.com
 
【Dynamics CRM报表开发】3、创建基于SQL报表_www.fengfly.com
 
如果碰到关联多个实体来显示数据的话,需要为要启用预筛选的实体创建一个参数,和前面的增加参数的类似。比如另外一个例子是 客户和联系人实体关联,显示客户和联系人两个实体的字段,我需要在客户上启用预筛选,那么我需要增加一个报表参数,名称为 CRM_FilteredAccount,这个参数的默认值我可以设置为简单的 select name,accountid from FilteredAccount ,并将这个参数设置为隐藏。
然后我还要修改数据集,增加一个参数,参数名为 @CRM_FilteredAccount ,参数值为 [@CRM_FilteredAccount] ,然后修改数据集的SQL类似如下:
DECLARE @SQL NVARCHAR(4000);
SET @SQL = 'select Filtered.Name,FilteredContact.FullName FROM (' + @CRM_FilteredAccount + ') AS Filtered ';
SET @SQL = @SQL + ' inner join FilteredContact on Filtered.AccountId = FilteredContact.AccountId';
EXEC(@SQL);
 这样就可以做到多实体关联的预筛选了。
 
值得注意的是,若之前报表没有启用预筛选,后来启用的,需要删除原来的报表,重新上传,囧。还有报表会有个默认的筛选条件,我们删除的话,去 报表 界面编辑默认筛选器,将条件去掉并保存即可。


本文地址 : http://www.fengfly.com/plus/view-215407-1.html
标签: Dynamics CRM 报表开发 SQL报表
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码: