利用MSSQL2000系统表实现WEB系统用户自定义报表功能-文档资料 联系客服

发布时间 : 星期五 文章利用MSSQL2000系统表实现WEB系统用户自定义报表功能-文档资料更新完毕开始阅读1d553aeaa36925c52cc58bd63186bceb18e8edd3

利用MSSQL2000系统表实现WEB系统用户自定义报表功能

Using MSSQL2000 System Tables to Achieve WEB System User-defined Reporting Liu Ping

(Sinopec Co.,Ltd.Jiujiang Company Information Center,Jiujiang332004,China)

:Report forms are one appearance mode of basic data inform in management services,It has characteristics of dynamic and diverse,in view of service requirment of report forms in Web-based system,This paper introduced a method to fast implementation user-defined report forms function with MSSQL2000 and PHP5.

Keywords:MSSQL2000;PHP5;WEB;System table;User-defined reporting 一、引言

在绝大多数企业应用系统中,数据报表是最基本的一种数据展示方式和手段,其中最常见的是固定格式定制报表方式,按需求定制开发,这种报表类型优点是系统用户无需干预操作简单,缺点是灵活度差,如果格式或取数规则改变,则需要修改程序代码,软件维护成本高,因此在实际项目中经常需要自定义报表,

即用户能自行设计定义、修改维护及控制输出。

MSSQL2000(Microsoft SQL Server2000)包含许多系统数据表,其中如sysobjects表存储所有数据库对象信息,sysproperties存储表、字段、描述等对象属性,syscolumns存储数据列信息,systypes存储了用户定义的数据类型。 本文以实例介绍一种直接利用MSSQL2000系统表,基于PHP5的WEB系统用户自定义报表功能的快速实现思路和方法,目前本实例已成功稳定运用于中石化九江分公司薪酬管理系统等多个项目中。

二、主要功能特点

本自定义报表功能实例具有以下特点:

1.可自定义报表属性如表头、字段宽度、标题文字等。 2.支持多表关联的明细报表与汇总报表类型。 3.可自定义动态报表规则。 4.支持Excel格式文件导出。 5.提供基本页面打印设置功能。 三、实现思路

用户自定义报表功能面向非开发人员,因此在功能设计上需要简单、直观,功能实现上采用以下步骤:第一,首先利用SQL Server 2000系统表取得数据库的各数据表对象中文注释及对应关系信息,然后以友好方式呈现客户端定义界面,界面中用户可选择或填写报表类型、报表定义名称、业务数据表、数据列名称、

输出字段、报表规则等,第二,将用户定义好的某张报表条件规则信息保存在相应用户数据表中,第三,当用户触发报表输出动作时,依据各定义条件项动态组合成数据查询语句,对语句进行合法性校验后执行并将结果输出到页面。 四、功能实现

(一)系统软件环境要求

系统运行软件环境要求如下:服务器端操作系统为Windows2000或以上版本,Web服务器为Apache2.0,服务器端语言PHP5.2.5,数据库系统为MSSQL2000 sp4。 (二)创建基础数据表

基础数据表用于保存用户报表定义的相关信息,表结构定义如下:

1.报表定义基本信息表:reportdefine,本表存储报表名称、类型及输出、汇总、及检索字段等。

2.报表取数规则定义表:reportdefine_fixfd,用于存储报表的取数条件规则信息。

3.表间关系定义表reportdefine_tabrelation,此表存储多表查询时所涉及的表关系定义信息。 (三)报表基础信息定义

图一为报表项目定义维护界面,用户可结合CTR+鼠标左键选择多张数据表。

用户业务数据表下拉列表信息的获取SQL语句为:

$sql=\(cast(b.[value] as varchar),\)as comment from sysobjects as a left join sysproperties as b on a.id=b.id and b.smallid=0 where xtype='U' and a.status>0\;

报表基础信息定义完成并保存后,得到报表定义信息列表如图二所示:

(四)多表表关系定义

多表关联查询报表关系定义如图三所示: 其中数据表字段信息获取SQL代码如下: $sql=\fieldname,c.name as type,d.[value] as miaoshu from sysobjects a inner join syscolumns b on a.id=b.id inner join systypes c on b.xtype=c.xtype inner join

sysproperties d on d.id=b.id and b.colid=d.smallid and d.smallid>0 where (a.type='U') and (a.name in \)\;

其中$TableArr_Str为数据表名字符串变量,存储了一组以逗号分隔的用户定义中所选的数据表的名称字符串。 (五)输出条件定义

在输出字段定义窗口中用户可定义报表输出列字段和顺序以及中文名,还可定义固定规则、汇总表汇总字段、分组字段、排序字段等,定义界面如图四所示: