MSCRM中报表开发一:创建基于SQL报表

时间:2022-09-14 10:04:59

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

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

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

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

DECLARE @SQL NVARCHAR(4000);

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

EXEC(@SQL);

MSCRM中报表开发一:创建基于SQL报表
 
MSCRM中报表开发一:创建基于SQL报表
 
如果碰到关联多个实体来显示数据的话,需要为要启用预筛选的实体创建一个参数,和前面的增加参数的类似。比如另外一个例子是 客户和联系人实体关联,显示客户和联系人两个实体的字段,我需要在客户上启用预筛选,那么我需要增加一个报表参数,名称为 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://luoyong0201.blog.163.com/blog/static/1129305201311193338296/

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

 

MSCRM中报表开发一:创建基于SQL报表的更多相关文章

  1. 六、K3 WISE 开发插件《直接SQL报表开发新手指导 - BOM成本报表》

    ======================== 目录: 1.直接SQL报表 ======================== 1.直接SQL报表 以BOM成本报表为例,在销售模块部署,需要购买[金蝶 ...

  2. MSCRM中报表开发二:创建基于FetchXML报表

    1. 获取FetchXML.因为FetchXML难以撰写,所以我们一般都是使用高级查找来生成FetchXML或者通过其他工具来生成.我这里在商机界面通过高级查找制作了一个新的视图,名称为 商机查询,  ...

  3. debian下为arm开发板创建基于debian或emdebian的根文件系统

    Debian系统本身包含对arm的支持,其包含的软件包最多,但是最终的文件系统要大一些. emdebian 是一个非常好用的嵌入式linux操作系统,其基于debian的特点对于熟悉debian系统的 ...

  4. Win10 IoT C#开发 2 - 创建基于XAML的UI程序 及 应用的三种部署方法

    Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. 上一章我 ...

  5. ReportingServies——SQLServer报表开发综合实例

    如果我们安装了sqlserver2008 R2,将会自动安装一个报表开发工具 不要以为此报表开发工具只适合于sqlserver2008,其实在sqlserver2012中也是支持的,事实上我现在项目中 ...

  6. ActiveReport系列报表开发随笔收集

    转自:博客园 http://www.cnblogs.com/dahuzizyd/archive/2007/04/11/ActiveReport_All.html 使用ActiveReport for ...

  7. 基于SQL的日志分析工具myselect

    基本介绍 程序开发者常常要分析程序日志,包括自己打印的日志及使用的其他软件打印的日志,如php,nginx日志等,linux环境下分析日志有一些内置命令能够使用,如grep,sort,uniq,awk ...

  8. Qlik报表开发见解

    因为项目需要,最近去做了Qlik Sense报表开发,学习了Qlik报表的开发方法和一些基础的开发模式,以下是我对Qlik报表开发的一些见解,个人水平有限,欢迎大神指导. 1.Qlik Sense的函 ...

  9. 微软BI 之SSRS 系列 - 在 Cube 中通过 MDX 查询实现基于父子递归关系的汇总报表

    之前我写了一篇在 SSRS 开发中处理这种父子关系的汇总与聚合的文章 (SSRS 系列 - 使用分组 Group 属性实现基于父子递归关系的汇总报表),示例中的查询是基于 SQL Server 关系型 ...

随机推荐

  1. 在AndroidStudio不能找到so文件问题:couldn't find libweibosdkcore.so

    解决步骤已经写到我的公众号,二维码在下面. 欢迎观看我的CSDN学院课程,地址:http://edu.csdn.net/course/detail/2877 本人联系方式: 更多精彩分享,可关注我的微 ...

  2. AOP实现原理

    Spring 为解耦而生,其中AOP(面向切面编程)是很浓重的一笔. 本文来探讨一下AOP实现的原理. 一. 概述 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负 ...

  3. shell下批量重命名svn文件的方法

    shell下批量重命名svn文件的方法 目标: 将svn目录下所有文件重命名 , 原文件前缀为 ucc_ , 批量改为 xmd_ 用tree看下当前svn目录 ucc_1.c ucc_1.h ucc_ ...

  4. 转载:全球首个微信小程序(应用号)开发教程!通宵吐血赶稿,每日更新!

    微信应用号(小程序,「应用号」的新称呼)终于来了! 目前还处于内测阶段,微信只邀请了部分企业参与封测.想必大家都关心应用号的最终形态到底是什么样子?怎样将一个「服务号」改造成为「小程序」? 我们暂时以 ...

  5. MySQL数据库远程连接开启方法

    有时候需要远程连接mysql数据库,默认是不可以的,可以参考下面的方法,解决下. 1.登陆自己机器的MySQL数据库:mysql -uroot -p密码 设置root用户可以任意IP访问,代码如下(可 ...

  6. socket通信技术介绍

    [-] 网络中进程之间怎样通信 什么是Socket socket一词的起源 socket的基本操作 socket函数 bind函数 网络字节序与主机字节序 listenconnect函数 accept ...

  7. Codeforces Round #256 (Div. 2) C. Painting Fence 或搜索DP

    C. Painting Fence time limit per test 1 second memory limit per test 512 megabytes input standard in ...

  8. Apache错误:(20014)Internal error: Error retrieving pid file logs/httpd.pid

    今天在虚拟机上打开apache出现如下错误: [root@ShiGuang ~]# service httpd start (20014)Internal error: Error retrievin ...

  9. 开发过程中常用到的git命令

    将git上项目下载到本地 1.将项目下载到本地 git clone (git项目地址) 2.进入项目文件夹中(cd 某文件夹) 切换到要使用的分支 git checkout develop 3.抓取远 ...

  10. Java虚拟机学习笔记——JVM垃圾回收机制

    Java虚拟机学习笔记——JVM垃圾回收机制 Java垃圾回收基于虚拟机的自动内存管理机制,我们不需要为每一个对象进行释放内存,不容易发生内存泄漏和内存溢出问题. 但是自动内存管理机制不是万能药,我们 ...