预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

MicrocomputerApplicationsVol.22,No.5,2006学习园地微型电脑应用2006年第22卷第5期 文章编号:1007-757X(2006)04-0059-03 基于WEB的多页打印报表动态生成 王建平① 摘要:随着INTENET技术的日益普及,许多行业的管理信息系统都是基于BöS结构环境,在客户端的浏览器上直接显示 与打印多页报表显得尤为迫切。本文采用ASP与DHTML结合技术,提出了在WEB页面中解决特定格式多页报表动态生成的技 术方案。 关键词:多页报表;WEB;管理信息系统 中图分类号:TP31文献标识码:B 1引言3多页报表生成的解决方法 基于HTML的WEB页面,由于其易用性和跨平台的特3.1WEB页面中报表内容的构造 性,迅速在各种信息系统中得到应用。MIS系统中,报表打印WEB页面中多页报表实现的技术路线是:在服务器端用 是一个必不可少的基本功能。在BöS模型的网络管理信息系VBScript语言调用数据库生成报表内容,这此内容传输到客 统中,客户端用的比较多的是IE浏览器,但是IE的报表打印户端构成WEB页面。在客户端使用DHTML对WEB页面中 功能不完善,灵活性不够,还不能够解决应用系统中各种格式的各元素进行操作,来实现多页报表的生成。 报表的打印。基于WEB的管理信息系统开发中,解决报表打 印的方案,有采用Plugin技术的,也有采用ActiveX控件等 等[1][2],还有采用第三方(CrystalReports)解决方案[3][4]。但 是,基于WEB窗口多页报表动态生成的文献却鲜有见诸报 道,本文利用采用ASP与DHTML结合技术,提出了在WEB 页面中解决按特定格式多页报表动态生成的方案。 2报表模板 1在信息管理系统中,报表内容常常要反映数据库中多 个表的记录。最常见的报表内容是由一对多两个表中的记录 反映,这样的报表一般可以分成标题区、概况区(主表记录)、 数据区(子表记录)和脚区四大部分(图1)。在生成报表时,子 表记录有多有少。当子表记录比较多时,则要用多页报表来表 示。多页报表的首页、中间页和末页的构成部分略有差别。报 表首页(图2-1)只有标题区、概况区和数据区三个部分,报表 的中间页只有标题区和数据区两部分(图2-2)、报表末页则 在客户端进行多页报表生成主要涉及操作有:读取WEB 为标题区、数据区和脚区三部分(图2-3)。 页面上各个HTML元素高度、打印纸张的高度等数据;计算 在图2报表中,用A、B、C和X字符串表示的内容是随着 报表总页数及各页上安置哪些子表记录;移动各个层及子表 数据库内容而变化的。一般用A、B、C字符表示的内容长度可 记录到相应位置;重新写各页上相关内容(如总页码与第几页 以预料的,而用X字符表示的内容的长度是变化。当X字符内 等)。这些操作过程都安排GenMulPage()子程序中,通过页面 容长度超过报表中预留宽度时,它需用多行来表示(如图1和 的<BODY>中的onLOAD()来调用。 图2-2),这样就给多页报表的自动生成增加了技术难度。 在WEB页面中,报表的标题区、概况区、数据区和脚区分 别用7个层<DIV>来构造,每个层中的内容主要由表格< ①作者简介:王建平,苏州科技学院城市与环境学系,硕士,副教授,苏州215011 ·95· MicrocomputerApplicationsVol.22,No.5,2006学习园地微型电脑应用2006年第22卷第5期 TABLE>来组织。生成多页报表的ASP文件主要代码示意如..................................... 下:<TABLEid=recwidth=........>数据库子表第n <HTML><HEAD>条记录数据<öTABLE> <SCRIPTLANGUAGE="VbScript"><!--<ödiv> SUBGenMulPage 调整有关层和表格元素位置,生成多页报表<!--写子表记录表尾。重复写多个这样层,供多页使 ENDSUB用。根据计算,将各个层移到每页相应位置--> --><divid="DbFooter"style="visibility:<%=lc2 <öSCRIPT>Show%>;width:<%=PageWidth%>px"> <TITLE>多页报表生成<öTITLE><öHEAD><tableclass=tab1width=...>...<labelid=kb>以 <BODYonload="GenMulPage">下空白<ölabel>..<ötable> <FORMname="fmtMulPage"method="post"><ödiv> <%...用VBScript从数据库的主表及子表中分别获