|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
WEB应用中报表打印的实现 随着世界范围内Internet环境的形成,全球正进入一个以网络为中央的计算时代。Web模型是在传统的C/S模型的基础上发展起来的一种新的Browser/Server计算模式。Browser/Server模型简化了C/S中的客户端,客户端只需装上操作系统、网络协议软件及浏览器;而服务器端则集中了所有的应用逻辑,开发、维护等几乎所有工作也都集中在服务器端。这时的客户机被称为瘦客户机,服务器被称为肥服务器。而WEB应用中的客户端的报表打印则没有C/S模型那么轻易实现,如何在不使用ActiveX控件的情况下,实现打印字体、字体颜色、表格宽度、打印纸型等的设置。下面就以一个小例子来说明。 一、 创建数据库 用 ACCESS创建一个名为user.mdb的数据库,然后建一张名为user的表,表结构如下: 字段名称 数据类型 username 文本 name 文本 sex 文本 二、 在asp中的实现 创建一个名为aspreport.asp的文件,其源代码如下: <% \\\'等到文本缓冲完才显示 response.buffer = true dim accessdb, cn, rs, sql \\\'数据库名 accessdb="user.mdb" \\\'连接数据库 cn="DRIVER={Microsoft Access Driver (*.mdb)};" cn=cn & "DBQ=" & server.mappath(accessdb) \\\'创建记录集 Set rs = Server.CreateObject("ADODB.Recordset") \\\'查询语句 sql = "select * from user " \\\'开始查询 rs.Open sql, cn %> <% \\\'告诉浏览器用word来显示文档内容 Response.ContentType = "application/msword" \\\'文档设定 response.AddHeader "content-disposition", "inline; filename=report.doc" %> <html> <head> <title>报表</title> </head> <body bgcolor="#FFFFFF"> <center><h1>报表</h1></center> <table border=1 cellspacing=0 cellpadding=0 bordercolor=#000000 align=center> <tr> <td>用户名</td> <td>真实姓名</td> <td>性别</td> </tr> <% \\\'移到第一个记录 rs.movefirst do while not rs.eof %> <tr> <td><%= rs("username") %></td> <td><%= rs("name") %></td> <td><%= rs("sex") %></td> </tr> <% \\\'移到下一个记录 rs.movenext loop %> <% \\\'关闭记录集 rs.close set rs=nothing response.flush response.end %> </table> </body> </html> 把上面的report.asp文件和user.mdb数据库放在同一目录下,再用iis或pws把他们所在的目录发布,打开浏览器,只要客户端机子上有装word,就会自动调用word以内嵌方法在浏览器上显示,此时完全可以像使用word相同来调整和打印。 三、 在jsp中的实现 创建一个名为jspreport.jsp的文件,其源代码如下: <%@ page contentType="application/msword;charset=gb2312" %> <%@ page import="java.sql.*" %> <html> <head> <title>报表</title> </head> <body bgcolor="#FFFFFF"> <center><h1>报表</h1></center> <table border=1 cellspacing=0 cellpadding=0 bordercolor=#000000 align=center> <tr> <td>用户名</td> <td>真实姓名</td> <td>性别</td> </tr> <% Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url="jdbc:odbc:user"; //连接user数据库 Connection con=DriverManager.getConnection (url, "", ""); Statement stmt=con.createStatement(); ResultSet rs=stmt.executeQuery("select * from user "); //查询user表 while(rs.next()){ %> <tr> <td><%= rs.getString("username") %></td> <td><%= rs.getString("name") %></td> <td><%= rs.getString("sex") %></td> </tr> <% } %> <% rs.close(); stmt.close(); con.close(); %> </table> jsp的服务器以TOMCAT为例,把上面的jspreport.jsp和user.mdb放在TOMCAT的root目录下。在控制面板的ODBC中建立相应的DSN,类型mdb数据库,数据源名为user。启动TOMCAT,输入相应的url,就可以看到和以上面asp相同的效果。 以上只是一个简朴的例子,在作报表时,可以先用word设计好,然后另存为网页,再利用此网页改编成相应的脚本,就可以达到较好的效果。此方式有一个限制就是客户端要有word软件,但是会比使用ActiveX控件安全和方便,而且服务器端使用的平台与WebServer是可以比较灵活的,特殊适用于基于web的OA系统。 返回类别: 教程 上一教程: 怎样使用ASP实现PING 下一教程: 怎样获知数据库的连接属性 您可以阅读与"WEB应用中报表打印的实现"相关的教程: · 巧用FILESYSTEM组件实现WEB应用中的本地特定打印 · 如何让WEB应用程序在CLIENT端实现导出报表功能 · WEB环境下打印报表的CRYSTAL的解决方案 · WEB打印设置解决方案三(FileSystem组件实现WEB打印) · 关于水晶报表10的WEB应用程序部署ADODB问题 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |