关于如何用ASP来打印ACCESS的报表?

tsinge 2002-08-16 04:24:48
关于如何用ASP来打印ACCESS的报表?

后台数据库就是用的ACCESS

是不是要用控件?
...全文
288 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
IsMe 2002-08-16
  • 打赏
  • 举报
回复
新版表格打印控件上载,欢迎试用

可打印数据:
记录集
各种Grid(如选中多行,打印选中行,否则打印全部)
记录集save方法的到的xml,mssql2000 for xml查询得到的xml
xmlDomdocument
网页中的数据岛

输出目标:
预览
打印机
html页面(同一个表格模板在c/s和web打印,效果完全一样)

应用范围:
传统c/s
dhtml客户端(在客户端使用脚本定义、打印、设置表格)
iis服务器端(在服务器端使用脚本定义表格,输出纯html表格
效果与c/s一样,在客户端使用IE自带的预览、打印)

表格模板支持:
xml格式模板
使用表格定义语句定义的表格可将模板保存到文件、数据库
支持最终用户通过表格设置修改表格,保存模板

成组打印:
支持一次打印一组含不同打印纸、不同类型的表格,如:
一套表格含封面、表格说明、各个表格等可一次打印预览
(在预览中通过翻页可浏览各个表格)

支持超宽表格分割打印
按照指定叠接宽度、实际打印纸型号分割

支持的表格类型:
数据表(多行表头、斜线、传统账本格式的金额格式等):
支持固定行高(默认)、自动折行的动态行高
支持列宽自动优化调节(如打印一个比较大的表,可能要
打印到多页,每页可根据当前页优化列宽)
分栏打印(栏数、栏间距可调)
按字段分页、按字段分组
表头背景色、各列背景色均可设置
条件前景色、条件背景色(如为负时用红色打印)
打印设置几乎可调节所有东西(如合计字段、分组字段、
份页字段、表眉、表脚、表头)
打印预览
...

不规则表:
用类似于dhtml 中的table对象模型,支持单元格嵌套
(可嵌套数据表、票据、不规则表等)
支持使用 dhtml 中的table语法定义表格
(<table border=1><tr><th>..</th></tr></table>)
支持图片打印(基于文件名、adodb.recordset 中的sql image
字段、access中的真正的ole字段)
支持单元格镜像(如一个单元格嵌套票据,另外两个单元格为其
镜像,可实现在一张打印纸上的三联打印)
强大的打印设置
打印预览
....

套打票据:
票据套打
轻松解决在不同打印机上位置不准(在打印设置中修改坐标原点即可)
普通大写金额、逐字填空大写金额等的操作与普通元素相同
强大的打印设置,可动态添加票据元素、拖动票据元素...


帮助:
帮助文件还算完善

示例:
详细的c/s示例,简单的dhtml示例,简单的asp示例

http://usevb.yeah.net

meizz 2002-08-16
  • 打赏
  • 举报
回复
这是我一段收藏的代码,我自己还没有测试过,不过你可以拿去看看。
IE的打印功能的确太弱了,这是一个将ASP 数据导入WORD打印的例子。

<%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<%

sql = "Select department,count(department) From personnel group by department" '将记录按部门分类统计

Set Cnn = Server.CreateObject("ADODB.Connection") '连接数据库
cnn.Open "driver={sql server};server=ywz;uid=sa;pwd=413811;database=asims"

Set Rs = Server.CreateObject("ADODB.Recordset")

Rs.CursorType = 3

Rs.LockType = 3

Rs.Open sql, Cnn

If Rs.EOF Then '如果没有记录就结束

Response.End

End If

%>

<html>

<%'以下显示表格标题和输出表头%>

<p align="center"><b><font size="4">公司员工统计表</font></b></p>

<div align="center">

<table id="data" border="1" width="606" height="53" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111"> <%'注意:此处标明表格的id为data%>

<tr>

<td width="93" height="24">

<p align="center"><font size="2">部门</font></td>

<td width="78" height="24">

<p align="center"><font size="2">合计</font></td>

<td width="413" height="24">

<p align="center"><font size="2">员工姓名</font></td>

</tr>

<%

hj=0 '设置变量,总人数合计初始值为0

'以下While循环按部门依次完成统计和报表

while (not rs.eof)

departmenttmp=rs("department") '设置临时变量,保存当前部门名称

sqlstr="select * from personnel where department='"&departmenttmp&"'" '找出当前部门的所有员工

Set conn = Server.CreateObject("ADODB.Connection") '再次连接数据库

conn.Open "driver={sql server};server=ywz;uid=sa;pwd=413811;database=asims"

Set rss = Server.CreateObject("ADODB.Recordset")

rss.CursorType = 3

rss.LockType = 3

rss.Open sqlstr, conn

number=0 '设置变量,当前部门人数合计初始值为0

'以下While循环计算出当前部门人数合计

while(not rss.eof)

rss.movenext

number=number+1

wend

hj=hj+number '总人数合计为各部门人数之和

rss.movefirst

flag=0 '设置变量,flag用来判断当前部门是否首次出现,初始值为0

'以下While循环输出当前部门统计数据和员工名单

while(not rss.eof)%>

<tr>

<%if (flag=0) then%>

<%'如果flag为0,表示该部门是首次出现,表格此处就应该输出部门名称,部门员工合计人数%>

<td width="93" height="24"><p align="center"><font size=2><%=departmenttmp%></font></td>

<td width="78" height="24"><p align="center"><font size=2><%=number%></font></td>

<%else%>

<%'如果flag不为0,表示该部门不是首次出现,表格此处就应该输出空白%>

<td width="93" height="24"><p align="center"> </td>

<td width="78" height="24"><p align="center"> </td>

<%end if%>

<%'无论该部门是否首次出现,此处输出员工姓名%>

<td width="413" height="24"><p align="center"><font size=2><%=rss("name")%></font></td>

<%rss.movenext '当前部门员工记录指针rss指向下一个员工记录

flag=flag+1 'flag加1

wend%>

</tr>

<%rs.movenext '部门记录指针rs指向下一个部门记录

wend%>

<tr>
<%''表格最后一行输出总人数合计%>

<td width="93" height="24"><p align="center"><font size=2>员工合计</font></td>

<td width="78" height="24"><p align="center"><font size=2><%=hj%></font></td>

<td width="413" height="24"><p align="center"><font size=2> </font></td>

</tr>

</table>

</div>

<center><input type=button onclick="vbscript:buildDoc" value="打印"></center> <%''点击"打印"按钮,调用vbscript函数buildDoc生成本地Word文档,实现本地打印。%>

</html>

<%'以下VBScript代码实现buildDoc函数%>

<script language="vbscript">

Sub buildDoc

set table = document.all.data '把html文档中的表格data的结构和数据赋值给table

row = table.rows.length 'row为table的行数

column = table.rows(1).cells.length 'colnum为table的列数


'Set objWordDoc =CreateObject("Word.Document") '创建一个Word.Document的对象
Set objWordDoc=CreateObject("Word.Document.8")

'Set objWordDoc= CreateObject("Word.Application")
Dim theArray(10,10000) '定义数组变量,存放表格中的数据,10是虚拟列数,10000是虚拟行数

'以下两层for循环将html文档的表格中的纯文本数据赋值给数组

for i=0 to row-1

for j=0 to column-1

theArray(j+1,i+1) = table.rows(i).cells(j).innerTEXT

next

next



objWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore("公司员工统计表") '显示表格标题

objWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore("") '输出标题后回车换行



Set rngPara = objWordDoc.Application.ActiveDocument.Paragraphs(1).Range

'以下With代码段设置标题属性

With rngPara

.Bold = True '将标题设为粗体

.ParagraphFormat.Alignment = 1 '将标题居中

.Font.Name = "Arial" '设定标题字体

.Font.Size = 12 '设定标题字体大小

End With



Set rngCurrent = objWordDoc.Application.ActiveDocument.Paragraphs(3).Range

Set tabCurrent = ObjWordDoc.Application.ActiveDocument.Tables.Add(rngCurrent,row,column)

'以下for循环输出表头

for i = 1 to column

objWordDoc.Application.ActiveDocument.Tables(1).Rows(1).Cells(i).Range.InsertAfter theArray(i,1)

objWordDoc.Application.ActiveDocument.Tables(1).Rows(1).Cells(i).Range.ParagraphFormat.alignment=1

next

'以下两层for循环输出表格实际内容

For i =1 to column

For j = 2 to row

objWordDoc.Application.ActiveDocument.Tables(1).Rows(j).Cells(i).Range.InsertAfter theArray(i,j)

objWordDoc.Application.ActiveDocument.Tables(1).Rows(j).Cells(i).Range.ParagraphFormat.alignment=1

Next

Next

objWordDoc.Application.ActiveDocument.SaveAs

End Sub

</script>




</BODY>
</HTML>

数据库TABLE,导入你自己的数据库就可以了
CREATE TABLE [personnel] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[department] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

28,404

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧