冯亚丽,王 铮,吕春龙,曹志民,戴 庆
(1.东北石油大学计算机与信息科学学院,黑龙江大庆,163318;2.长庆油田分公司,第一采油技术服务处,西安710200;3.东北石油大学电子科学学院,黑龙江 大庆163318)
近年来,随着网络的发展,静态报表已经不能满足用户的需求.中国式报表以其格式整齐美观、又符合中国人的思维方式等特点,深受中国人的喜爱.为此,对其在信息处理中的应用研究与创新不断深入.而动态中国式报表是其应用研究的新的难点之一,动态中国式报表不仅实现了报表的动态生成,而且可以展现复杂的报表样式[1].这样动态的生成中国式报表,使表结构的定义存储与数据信息分离,如果表结构发生变化,只需修改表结构的定义,无需站点维护人员重新编写程序和设计报表,大大提高了维护人员的修改报表的工作效率,增加了报表的兼容性和适应性.本文深入地研究了中国式报表的动态生成的方法,并对生成过程中存在的难点和问题进行了详细分析.
1)报表数据
报表中的数据是指用户将原始的数据信息整理加工,使其按一定格式存储,方便查询、管理.如需要对其进行读取、求和及复杂运算等,最后通过报表显示或打印出用户所需的数据.
2)报表的结构及使用
由于报表的结构复杂多变,尤其是中国式报表更是布局灵活.依据对目前常用报表的分析,可将报表的结构归结为六类模板:单表、多表、交叉表、向下钻取表、复杂表、中国式报表.并分别将它们存入数据库中,用户根据需求选择不同的模板,实现报表的输出.
3)报表的打印
报表的打印与打印设备无关,支持多种打印格式.
系统总体架构设计是在系统分析的基础上通过对多种可实现方案的建模、仿真、计算、综合和优化,最终形成总体研制方案的过程,是软件开发的重要环节[2].
根据对中国式报表的系统分析,本文设计报表的功能模块如图1所示.
图1 报表功能模块图
在整个系统架构下,各模块的功能如下.
动态报表生成:从需求分析中知道,报表的样式分为六种包括:单表、多表、交叉表、向下钻取表、复杂表、中国式报表.设计可视化界面,通过选择报表模版,选择报表中要包含的数据信息,输入要显示的报表的相关信息.例如报表标题、制作人、修改时间等信息.采用动态SQL语句技术组织查询条件,利用ADO.NET技术将数据集中的数据绑定到报表查看器控件,实现对报表数据的查询显示.
报表导出及打印:Crystal Report在B/S模式下提供了很好的报表输出功能,可将报表导出为Word、Excel、PDF、Htm l等格式.
报表管理:设计可视化界面,采用动态SQL语句技术组织查询条件,采用ADO.NET技术将数据集中的数据绑定到GridView控件,实现对数据的编辑、选择、删除等功能.
1)B/S结构
Browse/Server即(浏览器/服务器)模式是随着Internet技术的兴起,对C/S结构改进的三层分布式体系结构,系统结构如图2所示.
图2 浏览器/服务器模式
B/S结构适用于使用范围广、地点灵活、而安全性、交互性要求不高的场合.其优点是:①无需开发与安装客户端专用的用户操作界面应用程序,只需安装通用Web浏览器即可;②操作简便,用户无需特殊培训就可以直接使用;③系统的开发者无需再为不同级别的用户设计不同的客户应用程序,只需在服务器上实现所有的功能,并就不同的功能为各个级别的用户设置权限,各用户通过HTTP请求在权限范围内调用Web服务器上的不同处理程序,就可以完成对数据的查询或修改[3].
2)ADO.NET组件
ADO.NET构建了数据意义上的.NET应用程序的基础.ADO.NET将所有用于数据处理的类集合在一起,这些类代表数据容器的对象,它们分别针对典型的数据库性能——索引和视图.
3)数据查询语言
SQL语言是关系数据库管理系统的实现语言,是一种介于关系代数和关系演算之间的结构化语言[4].
在数据库中,对数据库的各种操作一般都是通过SQL语句进行的,查询是由select语句完成的,其最基本和常用的形式为select<列名>from<表名>where<查询条件>,其中where子句可以由多个谓词通过逻辑关系组合在一起,任何复杂的查询都能由它表达出来,select语句是实现动态查询的依据.
相对于平时在程序开发中将用来定义、查询和操作的语句的固定方式,动态SQL技术是SQL语句在设计时并不产生,而是在程序运行时,根据用户的动态选择临时生成SQL条件,动态的生成SQL查询串,然后去执行并返回结果集,所以需要设计一个用户可以选择的友好的操作界面,灵活的拼接SQL条件,动态语句是报表中数据得以动态实现的基础.
在作报表的数据处理时,动态SQL语句是常用的方法,因为动态SQL语句中的条件语句在程序运行时才被赋予确定的值,这样增强了用户对数据的可操作性,增加了程序的清晰度,提高了统计查询的效率.
表的样式一共分为六大模板,中国式报表是系统中最复杂的表模板.动态的中国式报表是指可以任意选择一级列以及该列所包含的任意的二级列,对于行来说也可以任意选择的复杂表表.表的结构包含表标题、一级列标题、二级列标题、一级行标题、二级行标题.
① 新建一个DateSet命名为Shiyou,在数据库中再新建一个DataTable命名为“syou”,表内一共有10个列,s0~s2类型为string,s3~s9类型为int,如图3所示.
②创建一个.rpt文件,右击选择“数据库”→“数据库专家”.在“数据库专家”窗口中,展开“项目数据”,展开“ADO.NET数据集”→“Shiyou”选择“Shiyou”下的表,将表添加到“选定的表”中.
图3 数据集
③在报表设计器中,新建一个参数名为“?line0~?line3”用来存储一级列名,“?s0~?s9”用来存储二级列名.详细资料下的“s0~s9”为数据集中DataTabel中的列,用来存储表数据信息.最后再设计设置文本字体颜色、大小、样式,如图4所示.
图4 设计报表模版
报表管理模块的功能是采用动态SQL语句技术组织查询条件,采用ADO.NET技术将数据集中的数据绑定到GridView控件,实现对数据的编辑,选择,删除等功能.
该功能模块通过选择基本表名,动态显示基本表的所有信息.对表数据进行编辑、更新、删除等,同时可将外部的Excel表导入到页面.下面对各控件做简要描述:
1)DropDownList1控件:选择要显示的基本表的名称.
2)GridView1控件:显示基本表的所有信息.
3)编辑:单击该项后,表中的数据处于可编辑状态,编辑后选择更新,将修改后表信息更新到数据库中.
4)删除:单击该项后,对应该行的信息从表中删除,同时更新到数据库中.
5)TextBox1控件:此处输入要导入的Excel表名.
6)Button1(导出为Excel)控件:将显示的表导出为Excel.同时提示用户保存.
7)Button2(导入Excel)控件:将要TextBox1中对应的表导入到GridView1中,并在页面上显示.
8)两个CheckBox控件:动态控制列的显示与隐藏.
图5 导出界面
报表查看器自带导出和打印功能.导出功能可以方便用户将报表导出为Word、Excel、PDF、Html等不同格式的文件,并将文件保存到磁盘中.打印功能可以方便用户打印设置.
系统实现了动态的生成复杂中国式报表,可以根据用户需求生成所需的报表.实现了表结构与数据的独立存储,增强了系统的适应性.以及用户根据需求对报表进行一些简单删除、编辑、选择操作.
[1]张能力.Web动态报表的实现[J].计算机应用与软件,2004,21(4):15-17.
[2]刘鹏程.基于XML的web报表的设计与实现[J].科技信息,2010(3):86-87.
[3]李林广.Web发布用户自定义报表系统[J].南京工程学院学报,2002,2(2):24-27.
[4]祝 亮,陈建勋,陈 勇.一种报表模型的研究与实现[J].武汉科技大学学报:自然科学版,2007,30(3):302-304.