[个人原创 https://www.cnblogs.com/linjierd/p/11269386.html ] , 转发请声明原文链接
了解
a) SSRS 全称 SQL Server Reporting Services, 是依赖于数据库运行的, 是微软开发的重量级别的 BI 产品
b) 上手容易, 开发简单, 有数据库服务器就可以了, 不需要依赖于 IIS 运行
c) 可扩展性比较低, 对比那些其他报表来说, 确实比较好
d) 可独立的在 SqlServer 服务器上运行, 也可以内嵌到项目中
报表结构 https://www.cnblogs.com/linjierd/p/11269386.html
通过查看 Reporting 的报表, 一个完整的报表, 包含报表的一些配置(默认字体样式, 自动刷新, 语言, 容器空白, 报告单元类型, 报表 ID), 数据源, 数据集, 报告部分(相当于容器), 报表参数, 报表参数布局这几个主要组成部分, 根据报表样式的不同会有不同的组成部分, 比如在报表中内嵌了一个图片, 那么会多一个内嵌式图片的结构
报表版式 https://www.cnblogs.com/linjierd/p/11269386.html
限于页眉页脚的数据, 不能用于主体, 比如页码, 会导致报表报错
在报表数据的内置字段, 是全部可以放在页眉和页脚中, 部分可以放在主体中
限于主体的数据, 不能直接放在页眉和页脚, 可以通过聚合来实现现在在页眉, 比如求和, 平均值等等
在分组数据中, 不能直接放到页眉和页脚, 可以对分组进行分页, 然后显示 First(字段名)显示到页眉页脚中
报表样式 https://www.cnblogs.com/linjierd/p/11269386.html
下面是分页报表的所有布局控件
开发工具 https://www.cnblogs.com/linjierd/p/11269386.html
a) 开发报表有两种方式. 一种是 SSRS, 这个是利用报表服务直接创建报表; 另外一种是 SSDT, 是独立的开发工具,
b) 在 SqlServer2012 版本以前(包括 SqlServer2012), 安装数据库的时候可以安装 SQL Server Business Intelligence Development Studio 和 Sql Server Reporting Service. 在 SqlServer 2012 以后, SSDT 是需要独立安装的
配置 SSRS
a) 先配置 SSRS 服务器, 打开 Reporting Server 配置管理器, 选择报表服务器实例
b) 配置本地服务器, 用内置账户就可以了, 要是给别人用的, 选择配置其他账户, 在其他账户里, 注意用户名是域 / 用户名的格式, 不知道是什么的可以看看你的系统说明, 保存秘钥, 确认
c) 选择 web 服务 URL 点击高级, 可以添加, 可以修改
d) 更改数据库, 本地服务器的话, 默认就好, 远程服务器的话, 需要报表模式为 Sql 账户, 凭据也是
e) Web 门户 URL: 是你 SSRS 报表管理页面的配置, 配置完成的话, 现在就可以访问了
创建一个简单的报表
SSRS 方式
i. 打开你的 SSRS 管理页面, 在右上角点击加号 (新建) 新建文件夹与报表, 在 SqlServer2012 之前, 点击添加报表, 在 2016 以及 2016 之后, 区分了移动报表, 分页报表
ii. 点击加号(新建), 可以新建文件夹, KPI 报表, 移动报表, 分页报表, 数据源, 数据集
iii. 分页报表
iv. 新建分页报表会打开 Reporting Builder, 没有的话在弹出的页面选择获取 Reporting Builder;
v. 在 Reporting Builder 首先会给你弹出一个向导, 有表格矩阵, 图表, 地图向导, 空白报表
vi. 首先, 选择创建数据集(可以使用共享数据集),
vii. 然后, 创建数据源, 点击新建, 输入连接字符串, 或是生成字符串
viii. 第三步, 通过 Sql 完成数据集的创建, 可以通过可视化操作, 也可以点击编辑为文本输入 sql
(在这里需要的是, 字段名称不能有重复的, 不能同时写两个以上的查询语句或不能包含函数操作类的语句)
ix. 第四部, 分组
x. 第五步: 选择布局
xi. SqlServer2012 之前会有第六步选择样式外观
xii. 最后点击完成, 这样, 一个最简单的报表就出来了
SSDT 方式(支持中文)
xiii. Sqlserver2012(包含)之前的版本, 打开 SQL Server Business Intelligence Development Studio, 选择商业智能项目, 创建报表服务项目
xiv. VS2017(包含)之后, 打开 VS, 打开 VS2017 或 VS2017 SSDT, 选择商业智能项目, 创建报表服务项目
你的电脑数据库为 2016/2017 的, VS 为 2017 以下的, 抱歉了, 只能通过 SSRS 创建报表
xv. 选择项目路径以及名称
xvi. 打开解决方案资源管理器, 右击报表, 选择添加新报表
xvii. 选择或新建数据源, 点击编辑可以生成连接字符串
xviii. 输入查询的 sql 语句
xix. 选择表格或矩阵
xx. 分组
xxi. 输入报表名称
报表数据
a) 报表数据在窗口的左侧, 要是找不到了, 没关系, 在工具栏 - 视图 - 最下面的报表数据
b) 在实际工作中, 我们有很多要带条件的报表, 这就是报表参数
报表参数在 Report 报表中生成一个供用户输入数据的框, 比如下面这个例子
参数对接到 Sql, 在 Sql 中就是不带声明的局部变量
SELECT @NAME NAME,@SEX SEX,@AGE AGE,@LIKE [LIKE],@BRITHDAY BRITHDAY
报表分组分页
分组
a) 在 Report 中, 分组方式有行组和列祖, 一般的分组分页指的是行组
以下方数据做分页报表
b) 通过创建报表导航添加报表分组, SSRS 分组和 SSDT 分组通过导航分组的时候有点差异, 需要区别一下
xxii. SSDT 方式
选择表格
把相应的字段放入对应的位置中
选择样式和是否包含小计
xxiii. SSRS 通过导航来分组
输入 Sql, 然后把字段放入对应的字段(SSRS 没有直接的分页)
c) 高手操作手动分组
i. 上面的分组是最简单的, 一下才是分组分页的核心
ii. 下面是对报表数据的分组分页, 先展示一下分组前的报表
iii. 右击表格左框, 点击添加组
在这里看到了有子组和父组, 子组是在当前下的组内部的数据再次分组;
父组是对于一类型的数据放在一起组合起来的分组
iv. 因为我们是要从小往大分, 对于苹果, 香蕉这一类的数据进行分组, 所以点击添加父组
v. 在分组依据中选择对应的分组字段 CLASS3, 添加组尾以方便我们显示小计
组头相当于表格的标题头, 组尾就是表格最后用于汇总的尾
vi. 分组效果如下
vii. 组内排序
分页
分页是在分组属性中选中分页符, 勾选分页, 那么一组就会分一页
常用的报表函数
时间日期类
i. 获取当前时间日期, Now(), 使用方法 =Now()
ii. 获取当前日期, Today() 例子: =Today()
iii. 格式化字符串, Format(时间, 格式) 例子:=Format(Now(),"MM/dd/yyyy hh:mm:ss tt")
数学类
i. 加减乘除 + - * /
ii. 列 (组) 求和 Sum() 例子 =Sum(Parameters!Quantity.Value)
iii. 列 (组) 平均值 Avg() 例子 =Avg (Parameters!Quantity.Value)
iv. 列 (组) 最大值最小值 例子 =Max(Parameters!Quantity.Value)
=Max(Parameters!Quantity.Value)
v. 求余 Mod 例子 = 5 Mod 2
vi. 列 (组) 第一个值 First() 和 最后一个值 Last() 例子
- =First(Parameters!Quantity.Value)
- =Last(Parameters!Quantity.Value)
vii. 计数 Count()和 CountDistinct()
记录数据的数量, 包含重复不包含 NULL 的 Count()
记录不重复数据的数量, 不包含 NULL 的 CountDistinct()
表格类
i. 行号 RowNumber() 返回当前组内第几条数据
ii. 报表开始运行时间 Globals!ExecutionTime
iii. 报表总页码 Globals!OverallPageNumber , 只能用于页眉和页脚
iv. 当前页码 Globals!PageNumber, 只能用于页眉和页脚
流程
i. 判断 IIF
IIF(1>2,"正确","错误")
ii. 流程控制
- Switch(Fields!FirstName.Value = "Sue","Susan",
- Fields!FirstName.Value = "Bob","Robert")
字符串处理
i. 字符串切割 Split()函数
a) 返回包含指定数量子字符串的以零为基的一维数组.
b) 常用成员
i. 获取切割后返回数组中某个下标值的 Value 值 GetValue(下标值)
例子: = Split("12^34^56","^"). GetValue(0) 返回值为 12
ii. 获取切割后返回数组的长度 Length
例子: = Split("12^34^56","^"). Length 返回值为 3
支持的 HTML 元素
在 Report 报表中支持部分的 HTML 元素的显示
标签
i. 支持常用的标签
<b>b</b> <p>p</p> <h1>h1</h1> <h2>h2</h2> <h3>h3</h3> <h4>h4</h4> <h5>h5</h5> <h6>h6</h6> <span>span</span> <strong>strong</strong> <i>i</i> <div>div</div> <a href=>a</a> 等等
支持 ul li 无序列表
支持 ol li 有序列表 不支持定义样式
不兼容自定义列表
ii. 不支持表单类标签
不支持 table tr td 标签
不支持 from 等等
样式
iii. 支持常用的字体样式,
比如字体加粗, 字体倾斜, 字体颜色
iv. 不支持块元素样式
比如边框, 图片, 背景色, 宽高
Report 支持 VB 语言
报表中插入代码
在报表外空白处右击, 选择报表属性,
点击代码, 输入代码
代码例子
切割字符串代码, 第一个参数要切割的字符串, 第二个参数要分割的分隔符, 第三个是下标值,
- Function SplitStr(Str As String, S As String, Index As Int32) As String
- Dim Temp
- Temp = Split(Str, S)
- Dim Len
- Len = UBound(Temp) - LBound(Temp) + 1
- If Len <= Index Then
- Return ""
- End If
- Return Temp(Index)
- End Function
在报表中调用代码
在报表中使用代码是 Code. 代码方法名(参数 para)
报表图片
支持的格式
Report 仅支持 image/bmp,image/jpeg, image/gif, image/PNG 和 image/x-PNG 格式
其他格式的图片会无法识别
图片的使用
添加外部图像
外部图像就是通过地址来访问的图像, 外部图像可以存在于报表服务器上, 也可以存在于其他网站上. url 支持 http://,https://,ftp://,file,mailto
操作:
右击报表设计视图, 选择 "插入" - "图像"
在图像选项的 "常规" 中, 输入图像名称, 选择 "图像源" 为 "外部"
在使用此图像中输入 url
设置其他属性
点击确定
调整大小
在报表中嵌入图像
嵌入图像是直接把图片转换成 base64 直接内嵌到 Report 中, 会增大报表的文件大小
操作:
右击报表设计视图, 选择 "插入" - "图像"
在图像选项的 "常规" 中, 输入图像名称, 选择 "图像源" 为 "嵌入"
在使用此图像后面点击导入
悬着你要导入的图片
设置其他属性
点击确定
调整大小
导入后的图片存放于报表内部的 EmbeddedImage 的节点下
通过数据库导入图片
注意: 这个方式只支持 base64 字符串的, 而且不包含 base64 数据头的
操作:
右击报表设计视图, 选择 "插入" - "图像"
在图像选项的 "常规" 中, 输入图像名称, 选择 "图像源" 为 "数据库"
在使用此字段后面选择字段
在使用此 MIME 类型后面选择 base64 的图片格式
悬着你要导入的图片
设置其他属性
点击确定
调整大小
条形码
使用第三方控件
查阅了国内外大多数网站, Reporting 报表条形码控件做的不错的是 Barcode Professional for Reporting Services
下载安装好后再 SSDT 工具栏添加安装后得到的 Dll 文件, 这时, 工具箱里会多一个 Barcode Professional for Reporting Services, 拖进报表中就可以使用了
使用条形码字体
这里使用了最常用的 Code128, 由于完整的 Code128 包括头尾和校验码, 所以对数据进行处理
处理数据的 Code128 代码
Code 128 字体的使用
从网上下载 Code 128 字体
(公司内部文件, 解压请联系)
报表 中的设置
调用 Code128A 的代码给数据添加头尾合校验码
b. 设置字体为 Code128, 更改字体大小
需要注意的是, 报表的语言不能为 zh-cn, 我直接给清空了
Reporting 报表开发知识合并[个人原创]
来源: http://www.bubuko.com/infodetail-3138496.html