本文是关于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里做开发:

2. 另外还可以用 Microsoft® SQL Server® 2012 报表生成器 来开发报表:

三、 注意事项

下面就一个最简单的例子介绍下开发CRM报表时要注意的地方:

1. 首先建立一个数据源:

2. 建立dataset:

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学习笔记 系列汇总
 
 

Dynamic CRM 2013学习笔记(十五)报表设计:报表入门、开发工具及注意事项的更多相关文章

  1. Dynamic CRM 2013学习笔记(五)禁止修改、删除审批通过后的单据

    审批通过后的单据,一般要对其进行控制,不能修改,不能添加,删除等,下面分别介绍下如何实现: 一. 禁止修改: 1. 主表控制,如果页面上审批状态为审批中或审批通过,就把整个页面都disable掉 1: ...

  2. Dynamic CRM 2013学习笔记 系列汇总

    这里列出所有 Dynamic CRM 2013学习笔记 系列文章,方便大家查阅.有任何建议.意见.需要,欢迎大家提交评论一起讨论. 本文原文地址: Dynamic CRM 2013学习笔记 系列汇总 ...

  3. Dynamic CRM 2013学习笔记(二十六)报表设计:Reporting Service报表 动态参数、参数多选全选、动态列、动态显示行字体颜色

    上次介绍过CRM里开始报表的一些注意事项:Dynamic CRM 2013学习笔记(十五)报表入门.开发工具及注意事项,本文继续介绍报表里的一些动态效果:动态显示参数,参数是从数据库里查询出来的:参数 ...

  4. Dynamic CRM 2013学习笔记(二十九)报表设计:reporting service 报表开发常见问题

    在报表开发过程中,经常会遇到各种各样的问题,比如The report cannot be displayed. (rsProcessingAborted),一点有意义的提示都没有:再就是分页问题,经常 ...

  5. Dynamic CRM 2013学习笔记(二十五)JS调用web service 实现多条记录复制(克隆)功能

    前面介绍过如何克隆一条当前的记录: Dynamic CRM 2013学习笔记(十四)复制/克隆记录 , 主要是通过界面上加一个字段,单击form上的clone 按钮时,改变这个字段的值以触发插件来实现 ...

  6. Dynamic CRM 2013学习笔记(三十五)自定义审批流6 - 审批通过后,再审批 - 二次审批

    最近有个特殊的需求,客户想做二次审批,就是审批通过后,再走一次审批流程.最开始一想,这还不简单,审批通过后,直接把状态改成draft就完了,后来一试,发现一堆问题,比如第一次审批完后,界面是不允许修改 ...

  7. Dynamic CRM 2013学习笔记(四十五)修改实体及字段的前缀(不用new_开头)

    最近做一个升级的CRM项目,为了区分哪些是新增的,所以决定用一个新的前缀来定义实体及新加的字段.之前用的是new_开头,现在改成tm_开头.   原来只要是新建实体或字段都是new_开头:   1. ...

  8. Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置

    上次介绍了<Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示> 以及如何配置自定义审批流的按钮:<Dynamic CRM 2013学习笔记(二十一)自定义 ...

  9. Dynamic CRM 2013学习笔记(四十六)简单审批流的实现

    前面介绍过自定义审批流: Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示 Dynamic CRM 2013学习笔记(二十一)自定义审批流2 - 配置按钮 Dynamic ...

随机推荐

  1. myeclipse 导入JAVA项目

    说白了.就是别人给你一份写好的文件你不会用是吧?新手都是这样的.很正常..这样.咱们一步一步的来.邮件项目工程栏,选择import,选择General,选择Existing Projects into ...

  2. 在Egret实现二维码长按识别

      Egret中二维码图片,是在canvas上,无法在微信上长按扫描识别. 由于微信长按识别二维码是截屏扫描原理,所以只要长按当前屏幕任意一张图片,都能够识别当前屏幕上的二维码. 这里把二维码放在ex ...

  3. mysql之触发器入门

    触发器语法: CREATE TRIGGER <触发器名称>  --触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.{ BEFORE |  ...

  4. 使用imap协议接收邮件

    之前一直使用PHPMail类进行发送邮件,这个是一个非常强大的类,但是其实底层就是使用mail()函数来进行发送的. 但是现在公司有个需求是  写个程序需要实时的接收邮件,主要是判断邮件发出去了,并且 ...

  5. JavaScript高级程序设计笔记之面向对象

    说起面向对象,大部分程序员首先会想到 类 .通过类可以创建许多具有共同属性以及方法的实例或者说对象.但是JavaScript并没有类的概念,而且在JavaScript中几乎一切皆对象,问题来了,Jav ...

  6. C++之jsoncpp学习

    最新由于客户端要用到jsoncpp,所以自己也跟着项目的需求学了一下jsoncpp.以前没用过xml,但是感觉接触json后,还蛮好用的. 参考地址 http://jsoncpp.sourceforg ...

  7. 关于 NPOI 报 Invalid column index (256). Allowable column range for BIFF8 is (0..255) or ('A'..'IV') 错误的解决办法

    当看到这个错误的时候,网上搜索可以会有些说列数有限制之类的说法,这个说法是相对于 Office 2003 的,在 Office 2007 之前,最多只可以创建  列:在 Office 2007 之后, ...

  8. VC++ 控制外部程序,向外部程序发送一个消息的方法

    这里需要考虑两部分的内容: 发送端: 查找对应的窗体,找到CWnd的值 向窗体发送消息 举例: CWnd* wnd = FindWindow(NULL, _T("选择题做题过程中" ...

  9. MYSQL服务器字符集设置

    修改默认字符集 vi /etc/my.cnf 在[mysqld]下面加入default-character-set=utf8 在[client]下面加入default-character-set=ut ...

  10. Style file: generic.xaml

    All silverlight control style should be designed in generic.xaml which is in theme folder. But when ...