《经典收藏 reporting service》由会员分享,可在线阅读,更多相关《经典收藏 reporting service(61页珍藏版)》请在金锄头文库上搜索。
1、Reporting Service,2,目标,Reporting Service的报表概念 常用报表的制作 报表简单编程 参数化报表的制作 子报表的制作 钻取报表的制作,3,概述,Reporting Services 是一种微软提供的报表解决方案,用于生成从多种关系数据源和多维数据源提取内容的企业报表,发布能以各种格式查看的报表。可以通过基于 Web 的连接进行查看,也可以作为 Microsoft Windows 应用程序的一部分 Reporting Services有两种报表引擎,一种由.Net运行时提供运行在本地,一种通过Web服务提供,前者能够和应用程序紧密集成,采用编程方式对报表进行管
2、理;后者是单独的服务,随Sql Server2005一起发布,因为报表的相关数据保存在Sql Server的数据库中,所以必须安装Sql Server。默认采用Windows集成验证方式,但也可以更改验证方式为Forms验证。 二者的报表数据源都可以是支持OLEDB的多种数据库 以下先以本地报表来演示如何制作各式报表,最后再介绍一下服务器报表在制作过程中和本地报表的差异。,4,本地报表,本地报表比较简单,由集成在CLR中的报表引擎提供报表的生成,5,示例数据库,示例数据库为SQL Server数据库,已将其分离并放到示例程序文件夹,6,Reporting Service常用报表类型,1.表格式
3、报表,3.矩阵(交叉)报表,4. 图表(饼图、柱图、线图),2.列表报表,7,添加报表数据源,在创建报表前,必须先创建报表的数据源,Reporting Service以 强类型数据集作为数据源。 右击“解决方案管理器”中的项目,在弹出菜单中点击“添加新项”,弹出如下对话框,选择“数据集”,在名称中填入具体的名称后点击“添加”按钮,8,添加报表数据源,点击按钮新建连接,9,添加报表数据源,10,添加报表文件,右击“解决方案管理器”中的项目,在弹出菜单中点击“添加新项”,弹出如下对话框,选择“报表”,在名称中填入具体的名称后点击“添加”按钮,11,添加报表文件,报表工具箱,报表设计区,12,添加报
4、表文件,我们之前添加的数据集,13,表格报表制作,将“表”从工具箱中拖到报表的设计区,拖到设计区后如图,14,表格报表制作,切换到“网部数据源”,将字段拖到设计区表中的详细信息中,拖到这个位置,表头区会自动填入字段名,一般在之后将它改为中文,15,表格报表制作,列不够的话,右击列头,点击弹出菜单插入列的子菜单,16,表格报表制作,17,添加报表到Web页,选打开Web页面,从“数据”选项卡中将“ReportViewer”拖到页面,拖到页面后如图,18,添加报表到Web页,选择之前做好的rdlc文件,选中之后,切换到“源”可以看出使用的是绝对路径,最好将它改为相对路径,否则WEB程序的路径更改后
5、会出错。,先点击小三角,19,添加报表到Web页,运行后,页面显示如下:,20,数据格式化,运行后,页面显示如下:,选中要格式化的数据列,在Format属性中填入格式化字符串,21,数据格式化,金额被格式化后,页面显示如下:,22,数据格式化,格式化分为自定义格式化和标准格式化,以下列出常用的标准格式化 字符串,详细信息请查询MSDN中的格式化帮助,23,表达式,下面以数据行的背景色来演示表达式:,单出此处选中行,单击小三角弹出颜色选择框,再点击其中的“表达式”,24,表达式,下面以数据行的背景色来演示表达式 (奇数行背景色为“WhiteSmoke”,偶数行为“PeachPuff”):,在此处
6、填入表达式,25,表达式,IIf(RowNumber(NoThing) mod 2 = 0,“WhiteSmoke“,“PeachPuff“) Reporting Service的表达式采用类似VB.Net语法,在上面的表达式中,RowNumber用来求出当前行的行号,其参数为空表示求行在报表中的行号,也可以是组名,表示行在组中的行号,mod 用以求模,IIf类似三元操作符“?”,它有三个参数,第一个参数为返回布尔值的表达式,当第一个参数为真时,IIf表过式返加第二个参数的值,否则返回第三个参数的值。 Reporting Service还支持“Switch”等语句,详细信息请参考Reporti
7、ng Service的帮助信息。,26,表达式,最终运行结果如下:,27,自定义代码,点击报表主菜单(如果没有出现,先点击报表设计器), 再点击报表属性菜单项,弹出报表属性对话框,28,自定义代码,自定义代码完全采用VB.Net的语法,在此编写了一个函数,参数为行号, 根据行为奇数行还是偶数行返回不同的颜色字符串,29,自定义代码,在设置行的颜色属性时,依然选择表达式,在表达式中,通过code对象 来调用自定义代码中的函数,运行结果同表达式完全相同。,30,报表分组,右击左边的控制区,点击弹出菜单的“插入组”,选择分组字段后确定,分组后如图,如果再想添加组,再点击插入组,此时要将一个组的字段作
8、为父组,31,报表分组,如果需要总计,将数值型字段拖放到表尾,如果需要小计,将数值型字段拖放到组尾,32,报表分组,运行结果如下:,33,报表分组,在上一页PPT中,我们发现还有一些问题: 一.详细信息上面有空白行,这是由于组头上没有内容,但组头的行又没有隐藏引起的,所以我们要隐藏这两行。 二.分组的行应该只显示第一行的值,如一个员工分组里,只显示一次相同的员工名。 三.没有表格线,不符合我们中国老板的审美习惯。 以下我们来看看如何解决这些问题。,34,隐藏组头,选中组头两行,将属性面板中的“Visibility”下的“Hidden”的值设为“true“,35,边框设置,选中所有单元格,将边框
9、样式设为“Solid”,选中分组的两个单元格,然后将整个边框设为“none”,左右边框设为“Solid”,36,隐藏重复项,右击分组的单元格,点击弹出菜单中的“属性”,勾选“隐藏重复项”,再选择所在的分组,37,列表报表,表格式报表要求数据严格分行和列来显示,如果在一个 数据行中的数据在界面上显示时不受表格的限制,必须使用 列表,将列表拖放到设计器中,38,列表报表,表格式报表要求数据严格分行和列来显示,如果在一个 数据行中的数据在界面上显示时不受表格的限制,必须使用 列表,将字段拖放到列表中,如果字段是数值类型,会自动加上Sum进行汇总,“Sale_year”不需汇总,所以要手动去除Sum和
10、括号,39,列表报表分组,列表报表同样可进行分组。,40,列表报表分组,点击此按钮进行分组,41,列表报表,42,列表报表,进行分组后,拖放其它末分组字段到报表上,如果是 数值型字段,会自动加上Sum进行汇总,Sale_Year字 段虽然是数值类型,但不需要汇总,所以要手动去除Sum,43,列表报表,运行后结果如下:,44,利用列表进行分页,首先拖放一个列表报表项到设计器上,再将employee_name 字段拖放到列表中,然后设置以该字段进行分组。,45,利用列表进行分页,在设置分组时,勾选“在结尾处分页”,46,利用列表进行分页,然后拖放一个表到列表中,再将字段拖放到表中,则该表 中的数据
11、是以分组字段进行过滤后的数据,47,利用列表进行分页,最终结果如下,每一页只会显示一个员工的信息,如果 想显示后其它员工的信息,必须翻页。,48,矩阵报表,Reporting Service中的矩阵报表就是Crystal Report中的 交叉报表,矩阵报表由两个维度(各个维度可以细化)和数 据组成,例如以下一个表格,显示员工各年份销售额:,49,矩阵报表,将“工具箱”中的矩阵拖到设计区,50,矩阵报表,从数据源中将“sale_year”拖到“行”位置,将“country”拖到“列”位置,将“amount”拖到数据位置,51,运行结果如下:,矩阵报表,52,从数据源中将“sale_quarte
12、r”拖到“行”位置,将“area”拖到“列”位置,,矩阵报表,53,运行结果如下:,矩阵报表,54,右击一个分组,再点击“编辑组菜单”:,报表折叠,55,切换到可见性,勾选“可由其它关联报表项确定可见性”, 然后在报表项中选择该组的父组字段:,报表折叠,56,列中的“area”组也如上设置,最终显示结果如下 (点击“+”和“-”小图标可以折叠和展开报表,报表会进行汇总):,报表折叠,57,饼图,从工具箱中将“图表”拖到设计区,58,饼图,将”amount“拖到这,将”quarter“拖到这,将”sale_year“拖到这,59,三维图表,切换到”三维效果“选项卡,勾选以三维效果显示图表,右击图表,点击弹出菜单中的“属性”,弹出如下对话框:,60,饼图,运行结果如下:,61,点标签,右击图表,单击属性菜单项:,