【Reporting Services 报表开发】— 交互式报表

      咱们知道,界面是人与系统间的对话方式,当使用者面对的是冷冰冰的界面,不但会形成使用者对于系统的热情减低,也会由于不便而产生诸多抱怨。尤为像报表时企业内几乎每日都会使用到的工具,所以,如何让使用者能够再复杂的报表中最快找到所须要的信息,正是报表工具所努力的重要课题,为了提高使用者的便利与满意度,SSRS提供了许多便利的交互性功能,包括:交互式排序、文档结构图、书签、深化报表和钻取报表。html

1、交互式排序数据库

     在查看数据的过程当中,为了能快速地找出特定的信息以及确认数据的相对大小,总免不了使用排序的动做:“找出业绩最差的业务员”、“找出毛利最高的产品”等如此类的需求,这些对于分析人员来讲能够说是屡见不鲜。可是不一样的分析人员面对不一样的使用习惯以及分析目的,报表数据必须随着利用不一样的字段进行升序i和降序。架构

   1.新建报表,新建数据源和数据集,须要用到的SQL脚本:ide

 1 SELECT 
 2 YEAR(TRX_DTE) AS TRX_YEAR,
 3 DATEADD(dd,1-DAY(TRX_DTE),TRX_DTE) AS TRX_MONTH,
 4 C.PRODUCTSUBCATEGORY_KEY,
 5 C.PRODUCTSUBCATEGORY_NAME,
 6 D.PRODUCTCATEGORY_KEY,
 7 D.PRODUCTCATEGORY_NAME,
 8 F.COUNTRY_NAME,
 9 SUM(SALES_AMT) AS SALES_AMT,
10 SUM(SALES_QTY) AS SALES_QTY
11 FROM dbo.FACT_SALES A
12 LEFT JOIN 
13 dbo.DIM_PRODUCT B
14 ON A.PRODUCT_KEY=B.PRODUCT_KEY
15 LEFT JOIN 
16 dbo.DIM_PRODUCTSUBCATEGORY C
17 ON B.PRODUCTSUBCATEGORY_KEY=C.PRODUCTSUBCATEGORY_KEY
18 LEFT JOIN 
19 dbo.DIM_PRODUCTCATEGORY D
20 ON C.PRODUCTCATEGORY_KEY=D.PRODUCTCATEGORY_KEY
21 LEFT JOIN
22 dbo.DIM_STORE E
23 ON A.STORE_KEY=E.STORE_KEY
24 LEFT JOIN 
25 dbo.DIM_REGION F
26 ON E.REGION_KEY=F.REGION_KEY
27 GROUP BY 
28 YEAR(TRX_DTE) ,
29 DATEADD(dd,1-DAY(TRX_DTE),TRX_DTE) ,
30 C.PRODUCTSUBCATEGORY_KEY,
31 C.PRODUCTSUBCATEGORY_NAME,
32 D.PRODUCTCATEGORY_KEY,
33 D.PRODUCTCATEGORY_NAME,
34 F.COUNTRY_NAME
SQL Code

    2.添加父组(以[PRODUCTCATEGORY_NAME]),设置图1:工具

    

                        图1post

    3.点击“销售数量”的文本框属性,请勾选“对此文本框启用交互式排序”,并在排序区域单击“组”,并选择“PRODUCTCATEGORY_NAME”组。具体如图2性能

   

                                                                  图2url

   4.预览,此时发现刚才设置的表头处会有出现一个三角形图示,只要一单击,画面的数据就会如图3般自动切换升序和降序。具体如图3spa

  

                       图3设计

 2、文档结构图

      当使用者查看一份页数超过数十页甚至于数百,数千页的报表时,可怜的使用者只能利用工具栏上方的“上一页”,“下一页”,逐页靠本身的能力寻找所须要的信息内容,这种搜寻模式不只浪费时间,同时使用者在使用上也容易由于眼花而遗漏重大信息。所以,SSRS提供了“文档结构图”功能,让报表产生文档的结构图标签,借此解决使用者对大型报表数据搜寻的困扰。

      "文档结构图"的展示方式是在报表的左方提供了文件导引模式,文件导引模式中包含了报表使用者用来寻找信息的字段索引,索引来源可使来自单一字段,同时也可使多个组字段构成的层次式索引。使用“文档结构图“的效果是当使用者单击左方文档结构图索引的某个项目是,右方的报表就会马上跳至使用者选取的项目位置,这对使用者在数据量庞大的报表中寻找数据,是至关使用的小帮手。如下将利用两个范例,带领你们熟悉”文档结构图“的设计方式

  范例一:

    1.须要用到的SQL脚本:

SELECT PRODUCTCATEGORY_NAME, PRODUCTSUBCATEGORY_NAME, TRX_DTE, SUM(SALES_QTY) AS SALES_QTY, SUM(SALES_AMT) AS SALES_AMT FROM FACT_SALES A LEFT JOIN DIM_PRODUCT B ON A.PRODUCT_KEY=B.PRODUCT_KEY LEFT JOIN DIM_PRODUCTSUBCATEGORY C ON B.PRODUCTSUBCATEGORY_KEY=C.PRODUCTSUBCATEGORY_KEY LEFT JOIN DIM_PRODUCTCATEGORY D ON C.PRODUCTCATEGORY_KEY=D.PRODUCTCATEGORY_KEY WHERE TRX_DTE BETWEEN @START_DTE AND @END_DTE
GROUP BY TRX_DTE , PRODUCTCATEGORY_NAME, PRODUCTSUBCATEGORY_NAME
SQL Code2

    2. 先以产品大类(PRODUCTCATEGORY_NAME)分组,在添加子组(交易日[TRX_DTE]),如图4

    

                                  图4

    3.在产品大类"组属性”对话框切换至“高级”标签页,在“文档结构图”下拉菜单中选择产品大类”PRODUCTCATEGORY_NAME“,便可,如图5

    

                                                 如图5

   4.预览报表,此时左方会出现以产品大类名称为基础的索引,展开索引后,单击索引中的”家具“的项目,此时右方报表就会马上移到”家具“组的开头,如图6

   

                                                 图6

    范例二:

    1.在范例一的报表上,在产品大类的组内加入一个产品种类的子组。如图7

    

                                                       图7

   2.一样,在产品中类"组属性”对话框切换至“高级”标签页,在“文档结构图”下拉菜单中选择产品中类”PRODUCTSUBCATEGORY_NAME“,便可,如图8

     

                                          图8

     设置后如图9

    

                                                 图9

   3.预览报表,此时仔细看画面左方的文档结构图,第一层以”产品大类“为索引单位,单击左方的层次式文档结构图产品大类层级中的”家具“项目后,会同步展开出现全部的产品种类。此时只要单价产品中类为”卧室家具陈列“,右方报表马上会移到”卧室家具陈列“组开头。如图10

     

                                                   图10

 3、书签

      相信对网页熟悉的人对于定位锚(Anchor)的用途也不会感到陌生,我对这个就很熟悉,设置定位锚以后能够经过简单的点击,就让网页快速跳转到指定的地方。SSRS也能够作到相似的效果,只须要经过”书签“的设置,便可在报表页面使用超连接快速移动到指定”书签“的位置。

     1.使用前面范例二的报表的,范例的报表处添加一个文本框”这是首页“,在这个文本框,首先要在这个文本框中设为定位锚,此时只需点击此文本框后,按F4,在属性窗口的”Bookmark“属性中填入”这是首页“做为书签。如图11

    

                                                                      图11

   书签能够是任何字符串,可是在报表中必须是惟一的。若是书签并不是惟一,则连接此书签是,系统会指向第一个相符的书签。

  2.在数据表的最左边插入一列,并在文本框里面输入”返回首页“,单击该“文本框属性”,在”文本框属性“对话框中切换至”操做“标签页,勾选”转到书签“,并在下拉菜单内填入要调至的书签。这里为“这是首页”。如图12

  

                                                           图12

 3.预览报表,不管在报表何处,好比第二页,第三页等,只要把鼠标放至在”返回首页“的存储格上方,就会出现”小手指(表示超连接)“的图示,画面就会自动调回至报表首页(设置书签之处)。如图13和图14

  

                                        图13

   点击图13的返回首页,直接会跳转到图14

   

                                    图14

 4、深化报表

     在报表中”组“是常用来显示汇总数据的方式,经过组可让数据进行结构化的汇总,以方便浏览者解读报表信息。在复杂的商业报表中,一般会有多重的组结构,例如,时间久可能会有年,季,月,日,为了方便使用者查看,若是组可以让使用者自行展开和缩合,分析者就能够选择想要查看的年份并深化至想要的时间层。

   多维度分析是用数据事先汇总来达到动态报表的效果,在SSRS中也提供类相似的”深化报表“功能(Drill-down),虽然没有办法像多维度分析般动态拖拉报表的横轴和纵轴,可是仍旧能够利用组结构设计出动态展开和缩合的架构。

     范例一:深化式报表

      1.须要用到的SQL:

 1 SELECT 
 2 YEAR(TRX_DTE) AS TRX_YEAR,  3 month(TRX_DTE) AS TRX_MONTH,  4 C.PRODUCTSUBCATEGORY_KEY,  5 C.PRODUCTSUBCATEGORY_NAME,  6 D.PRODUCTCATEGORY_KEY,  7 D.PRODUCTCATEGORY_NAME,  8 F.COUNTRY_NAME,  9 SUM(SALES_AMT) AS SALES_AMT, 10 SUM(SALES_QTY) AS SALES_QTY 11 FROM dbo.FACT_SALES A 12 LEFT JOIN 
13 dbo.DIM_PRODUCT B 14 ON A.PRODUCT_KEY=B.PRODUCT_KEY 15 LEFT JOIN 
16 dbo.DIM_PRODUCTSUBCATEGORY C 17 ON B.PRODUCTSUBCATEGORY_KEY=C.PRODUCTSUBCATEGORY_KEY 18 LEFT JOIN 
19 dbo.DIM_PRODUCTCATEGORY D 20 ON C.PRODUCTCATEGORY_KEY=D.PRODUCTCATEGORY_KEY 21 LEFT JOIN
22 dbo.DIM_STORE E 23 ON A.STORE_KEY=E.STORE_KEY 24 LEFT JOIN 
25 dbo.DIM_REGION F 26 ON E.REGION_KEY=F.REGION_KEY 27 WHERE YEAR(TRX_DTE)=@YEAR
28 GROUP BY 
29 YEAR(TRX_DTE) , 30 month(TRX_DTE), 31 C.PRODUCTSUBCATEGORY_KEY, 32 C.PRODUCTSUBCATEGORY_NAME, 33 D.PRODUCTCATEGORY_KEY, 34 D.PRODUCTCATEGORY_NAME, 35 F.COUNTRY_NAME
SQL Code

  在【Reporting Services 报表开发】— 矩阵的使用 图14的基础上稍微改下,如图15

   

                                                         图15

    

   2.在下方数据行组面板右击”PRODUCTSUBCATEGORY_NAME“行组选择”组属性“,切换至属性对话框的”可见性“标签页,在报表最初运行时”处勾选“隐藏”,这表示“PRODUCTSUBCATEGORY_NAME”组在报表展现时默认为隐藏(缩合),并选择“PRODUCTCATEGORY_NAME”,并选如图16

  

                                                        图16

   3.切换至预览,此时报表一开始数据行只会出现“产品大类”汇总项目,可是显示的组内容表头上都会出现小型的“+”符号,点击该符号后,会展开该产品大类内的的全部产品中类,同时该“+”会切换为“-”。如图17

   

                                                                       图17

   注意这里要设置pading 的Left的属性,如图18:

   

                                                                                 图18

   范例二:父子式层次报表

    1.须要用到的SQL:

SELECT EMPLOYEE_KEY, MANAGER_KEY, EMPLOYEE_NAME, SUM(C.SALES_AMT) AS SALES_AMT FROM dbo.DIM_EMPLOYEE A LEFT JOIN dbo.DIM_STORE B ON A.EMPLOYEE_KEY=B.MANAGER_EMPLOYEE_KEY LEFT JOIN dbo.FACT_SALES C ON B.STORE_KEY=C.STORE_KEY AND YEAR(TRX_DTE)=2010
GROUP BY EMPLOYEE_KEY, MANAGER_KEY, EMPLOYEE_NAME
SQL Code

    2.加入数据表,将员工名称和销售金额字段加入数据表,

    3.创建以“EMPLOYEE_KEY”为基础的组,而后把详细的信息删除。如图19

     

                                图19

     4.右击“EMPLOYEE_KEY”组,选择组属性,切换至“高级”标签页,在“递归父级”处下下拉选择“[MANAGER_KEY]”。如图20

     

                                                 图20

    5.若是但愿视觉上呈现数状规则结构,则必须经过缩排的方式来显示。因此,选中“EMPLOYEE_NAME”的文本框,按F4,在其属性的Pading的“Left”的表达式中输入如下表达式

     =(2 + (Level()*20)) & "pt"。如图21

   

                                                                                          图21

    6.在下方数据行组面板右击”EMPLOYEE_KEY“行组选择”组属性“,切换至属性对话框的”可见性“标签页,在报表最初运行时”处勾选“隐藏”,这表示“EMPLOYEE_NAME”组在报表展现时默认为隐藏(缩合),并选择“EMPLOYEE_NAME”。如图22

     

                                            图22

     7.预览效果以下:

      

                                图23

      发现一个问题:上级的没有数字,由于是高级主管。高级主管必须为下层的数字的求和。

  

                             图24

   =Sum(Fields!SALES_AMT.Value)

  =Sum(Fields!SALES_AMT.Value,"EMPLOYEE_KEY",recursive)

  

  

                            图25

      

  5、钻取式报表:

    主要是主表跳转到子表,经过传参数到子表。具体以下图,你们本身思考下吧。 

   

                                             图26

 

   6、总结:

     SSRS报表开发基本上就差很少就这些,特别是对于Microsoft Dynamics CRM 中的报表开发者,这都是必需要掌握的知识。另外要开发出性能很好的报表,还须要掌握SQL Server的知识。另外SSRS还能够开发一些图表,微图形与仪表等其余功能,你们能够本身去研究。

   参考书籍《SQL Server 2008 R2  Reporting Services 报表服务》

   须要下载的数据库和SQL脚本:http://www.wsbookshow.com/bookshow/kjlts/jsj/kfzj/11395.html 的图书详情—>下载资源 都是用“ASIAMINER_SSRS”数据库

相关文章
相关标签/搜索