Dynamic CRM 2013学习笔记(十五)报表设计:报表入门、开发工具及注意事项
本文是关于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><fetch version="1.0" output-format="xml-platform" mapping="logical"> <entity name="account"> <attribute name="name" /> </entity> </fetch></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学习笔记(十五)报表设计:报表入门、开发工具及注意事项的更多相关文章
- Dynamic CRM 2013学习笔记(五)禁止修改、删除审批通过后的单据
审批通过后的单据,一般要对其进行控制,不能修改,不能添加,删除等,下面分别介绍下如何实现: 一. 禁止修改: 1. 主表控制,如果页面上审批状态为审批中或审批通过,就把整个页面都disable掉 1: ...
- Dynamic CRM 2013学习笔记 系列汇总
这里列出所有 Dynamic CRM 2013学习笔记 系列文章,方便大家查阅.有任何建议.意见.需要,欢迎大家提交评论一起讨论. 本文原文地址: Dynamic CRM 2013学习笔记 系列汇总 ...
- Dynamic CRM 2013学习笔记(二十六)报表设计:Reporting Service报表 动态参数、参数多选全选、动态列、动态显示行字体颜色
上次介绍过CRM里开始报表的一些注意事项:Dynamic CRM 2013学习笔记(十五)报表入门.开发工具及注意事项,本文继续介绍报表里的一些动态效果:动态显示参数,参数是从数据库里查询出来的:参数 ...
- Dynamic CRM 2013学习笔记(二十九)报表设计:reporting service 报表开发常见问题
在报表开发过程中,经常会遇到各种各样的问题,比如The report cannot be displayed. (rsProcessingAborted),一点有意义的提示都没有:再就是分页问题,经常 ...
- Dynamic CRM 2013学习笔记(二十五)JS调用web service 实现多条记录复制(克隆)功能
前面介绍过如何克隆一条当前的记录: Dynamic CRM 2013学习笔记(十四)复制/克隆记录 , 主要是通过界面上加一个字段,单击form上的clone 按钮时,改变这个字段的值以触发插件来实现 ...
- Dynamic CRM 2013学习笔记(三十五)自定义审批流6 - 审批通过后,再审批 - 二次审批
最近有个特殊的需求,客户想做二次审批,就是审批通过后,再走一次审批流程.最开始一想,这还不简单,审批通过后,直接把状态改成draft就完了,后来一试,发现一堆问题,比如第一次审批完后,界面是不允许修改 ...
- Dynamic CRM 2013学习笔记(四十五)修改实体及字段的前缀(不用new_开头)
最近做一个升级的CRM项目,为了区分哪些是新增的,所以决定用一个新的前缀来定义实体及新加的字段.之前用的是new_开头,现在改成tm_开头. 原来只要是新建实体或字段都是new_开头: 1. ...
- Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置
上次介绍了<Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示> 以及如何配置自定义审批流的按钮:<Dynamic CRM 2013学习笔记(二十一)自定义 ...
- Dynamic CRM 2013学习笔记(四十六)简单审批流的实现
前面介绍过自定义审批流: Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示 Dynamic CRM 2013学习笔记(二十一)自定义审批流2 - 配置按钮 Dynamic ...
随机推荐
- numpy.concatenate
import numpy as np a = np.array([[1, 2], [3, 4]]) a.shape Out[3]: (2, 2) b = np.array([[5, 6]]) b.sh ...
- 【转载】C++ IO库
本篇随笔为转载,原贴地址:<C++ Primer>第8章 IO库 学习笔记. 1.IO类 #include <iostream> istream//从流中读取数据 ostrea ...
- XidianOJ 1112 Too stupid
题目描述 某天 light由于太富而且太帅遭到了歹徒的袭击,现在他遇到了n个歹徒,准备对light施行不法行为,虽然light身体强壮,但是毕竟只有一个人肯定打不过那么多歹徒,但是高智商的light觉 ...
- Hibernate对象的状态
站在持久化的角度, Hibernate 把对象分为 4 种状态: 1. 持久化状态 2. 临时状态 3. 游离状态 4. 删除状态 Session 的特定方法能使对象从一个状态转换到另一个状态. 下面 ...
- gulp-htmlmin压缩html
通过一条命令用Npm安装gulp-htmlmin: npm install gulp-htmlmin --save-dev 安装完毕后,打开gulpfile.js文件,我们里面编写一个task用来专门 ...
- android_Activity之Button_OnClickListener
今天我们要讲的主要是四大组件之一Activity 什么是Android 的四大组件呢?接下来简单了解下. 1.Activity Activity就是我们应用程序的界面,主要用来跟我们的用户进行交互的 ...
- HTML 透明、阴影,圆角等知识点
table两个属性:cellpadding:内容与单元格边框的距离,内部距离cellspacing:单元格之间的距离,外部距离 table合并边框线: border-collapse: co ...
- Git版本控制教程
Git 版本控制入门 不了解Git请查看权威Git书籍 ProGit(中文版). 一份很好的 Git 入门教程,点击这里查看. Git客户端下载地址: 官方Git - TortoiseGit - So ...
- background-size的两个属性:cover和contain
两种都不会造成图片失真,其中: (1)cover:相当于宽度等于元素的宽度,高度设为auto: (2)contain:相当于高度等于元素的高度,宽度设为auto: 例如:设置一个高度和宽度都为300p ...
- 使用Intellij idea开发
使用IntelliJ IDEA开发SpringMVC网站(一)开发环境 使用IntelliJ IDEA开发SpringMVC网站(二)框架配置 使用IntelliJ IDEA开发SpringMVC网站 ...