一些打印

5.5  其他报表打印方案

除了以上介绍的Excel报表打印方案、XML技术报表打印方案和Crystal Report水晶报表打印方案,在ASP程序中还可以应用其他技术来实现报表打印的功能。本节将介绍Word报表打印、自定义ActiveX组件打印Access报表、图形报表打印以及套打报表。

5.5.1  Word报表打印

Microsoft Word是微软公司推出的Microsoft Office办公软件中的一个组件,它是一个功能强大的文字处理软件,可以进行文字输入、编辑、排版和打印操作等。在ASP程序中,可以创建Word的相关对象将网页中的内容导入到Word中,也可以调用Word中的数据报表,然后进行报表打印。

1.方案分析

在Web服务器上安装了Microsoft Word软件后,ASP就可以创建Word的相关对象,从而应用该对象的属性和方法对网页中的数据或者Word文档中的数据进行操作了。

网页上显示的数据一般都是从数据库中读取出来的,创建Word的Application对象可以将网页中具有一定显示格式的数据导入到Word文档中,然后进行报表打印的操作。

在一些实际工作中,用户可能会应用Word文档来存储一些数据报表(如:制作商务表格等),并进行排版工作等,为了方便用户查看Word文档中的内容,ASP可以编写动态代码打开指定的Word文档,然后再执行打印命令。

Word报表打印的流程图,如图5.34所示。

图/方案bmp/Word报表打印.bmp

图5.34  Word报表打印的流程图

2.实施过程

Microsoft Word在文字编辑、打印方面的应用很广泛,ASP通过调用Word的相关对象可以访问Word文档中的数据内容。下面介绍两种在ASP程序中通过Word进行报表打印的方法,分别是将网页内容导入到Word和打印Word报表。

l          方法一  将网页内容导入到Word

01  实例位置光盘/mr/5/5.5/5.5.1/01

在本章的5.2节中介绍了Excel报表打印方案,在ASP中不仅可以将网页中的内容保存到Excel中,还可以将网页中指定的内容导入到Word中。下面以企业内部管理系统的库存管理模块为例,介绍将网页中显示的数据导入到Word,然后再进行打印操作的过程。运行结果如图5.35所示。

线形标注 2: 将从数据库中读取到的数据导入到Word中,再进行打印操作图/方案bmp/Word报表打印2.bmp

图5.35  将网页内容导入到Word

在库存商品信息查看页面中,可以浏览到从库存商品信息表中读取到的数据信息。代码如下:

例程5-27  代码位置:光盘/mr/5/5.5/5.5.1/01/index.asp

<%

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

   sqlstr="select * from tb_store"

   rs.open sqlstr,conn,1,1

   do while not rs.eof

%>

<tr align="center">

  <td height="26"><%=rs("Gname")%></td>

  <td height="26"><%=rs("Gunit")%></td>

  <td width="93" height="26"><%=rs("Gstd")%></td>

  <td width="167" height="26"> <%=rs("Gprovide")%></td>

  <td width="85" height="26"> <%=rs("Gconect")%></td>

</tr>

<%

    rs.movenext

   loop

   rs.close

   Set rs=Nothing

%>

<div align="center"><a href="vbscript:" onClick="vbscript:SaveDoc()">Word报表打印</a></div>

单击页面中的“Word报表打印”超链接,就可以将表格中的数据写入到Word文档中,同时生成的临时Word文档会自动打开。运行效果如图5.36所示。

图5.36  保存网页内容的Word文档

在程序处理页面的客户端VBScript脚本中,自定义一个子过程用于将网页中的表格数据写入到Word文档中。具体的实现步骤如下:

(1)创建一个Word的Application对象实例,再调用Word的Documents集合的Add方法建立一个新的文档,并将页面中的表格数据存储在一个数组中。

(2)将表格的标题写入到Word中,并增添一个空行。

(3)在Word文档中建立一个表格,并将数组中的内容填写在该表格中。

(4)保存新建立的Word文档。

代码如下:

例程5-28  代码位置:光盘/mr/5/5.5/5.5.1/01/index.asp

<script language="vbscript">

Sub SaveDoc

Dim Table1

Set table1=document.all.data

row=Table1.rows.length

set wdapp=CreateObject("Word.Application")  //创建Word应用程序

wdapp.visible=true

set wddoc=wdapp.documents.add  //添加新的文档

colnum =Table1.rows(1).cells.length

将页面中表格的内容存放在数组中。

reDim theArray(colnum,row)

For i=0 to row-1

   For j=0 to colnum-1

       thearray(j+1,i+1)=table1.rows(i).cells(j).innerHTML

   next

next

intNumrows=row

将表格的标题信息写入到Word文档中,并设置其字体样式。

wdapp.application.activedocument.paragraphs.add.range.insertbefore("库存商品记录表")

set rngpara=wdapp.application.activedocument.paragraphs.add.range

with rngpara

.paragraphformat.alignment=1

.font.name="arial"

.font.size=9

End with

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

With rngPara

.Bold=True

.ParagraphFormat.Alignment=1

.Font.Name="Arial"

.Font.Size=12

End With

在文档的指定段落的区域内,添加一表格,将数组中的数据写入到表格中。

set rngcurrent=wdapp.application.activedocument.paragraphs(3).range

set tabCurent=wdapp.application.activedocument.tables.add(rngcurrent,intnumrows,colnum)

For i=1 To row

   For j=1 to colnum           wdapp.application.activeDocument.Tables(1).Rows(i).Cells(j).Range.InsertAfter theArray(j,i)         wdapp.application.activeDocument.Tables(1).Rows(i).Cells(j).Range.paragraphFormat.alignment=1

   next

next

保存建立的Word文档。

wdapp.application.activeDocument.SaveAs "NewDoc.doc",0,false,"",true,"",false,false,false,false,false

End sub

</script>

将网页中的内容导入到Word文档后,用户可以根据实际需要再对数据报表进行编辑操作,然后打印报表。

l          方法二  打印Word报表

01  实例位置光盘/mr/5/5.5/5.5.1/02

在ASP中不仅可以调用Word的相关对象将网页中的内容导入到Word,还可以打开Word文档直接进行打印操作。下面以企业营销管理系统的销售报表模块为例,介绍如何打开指定的Word报表文件,并进行打印操作。运行效果如图5.37所示。

图/方案bmp/Word报表打印3.bmp

图5.37  打印Word报表

在销售报表查看和打印页面中,首先选择相关的Word文档,然后单击“Word报表打印”按钮,这时选择的Word文档将自动打开,并处于打印的状态中。

为了便于读者理解,下面以列表的形式给出销售报表查看页面index.asp中所涉及到的表单及表单元素,如表5.8所示。

表5.8                 销售报表查看页面index.asp中的表单及表单元素

名称

元素类型

重要属性

含义

form

form

action="" method="post" enctype="multipart/form-data"

选择需要打印的Word文档

file1

input

type="file" id="file1" size="20"

确定Word文档的路径

print

input

type="submit" id="print" onClick="openWord(file1.value)"

Excel文件路径

在页面中单击“Word报表打印”按钮后的运行效果如图5.38所示。

图5.38  打开指定的Word文档

在程序处理页面中的客户端VBScript脚本中,自定义一个子过程用于打开并打印指定的Word文档。在该子过程中,首先创建Word的Application对象实例,再调用Documents集合的Open方法打开Word文档,最后调用Printout方法打印Word文档。代码如下:

例程5-29  代码位置:光盘/mr/5/5.5/5.5.1/02/index.asp

<script language="vbscript">

Sub openWord(filename) 

Set wrd=CreateObject("word.Application")

wrd.visible=true

wrd.Documents.Open(filename)

wrd.Application.Printout()

wrd=null

End Sub

</script>

3.补充说明

Microsoft Word是常用的文字编辑工具,使用Word可以进行记录会议内容、起草协议等工作。为了用户操作方便,在ASP中可以调用Word直接打印页面中的数据信息,即将用户在表单中输入的信息直接封装到Word中,然后再进行打印操作。如图5.39所示。

18-116

图5.39  调用Word进行Web打印

自定义一个VBScript脚本子过程,在该子过程中,首先获取页面中表单的数据信息,然后在客户端VBScript脚本中创建Word的Document对象,应用对象的相应方法将页面内容装入到Word文档中,并直接进行打印操作。代码如下:

<script language="vbscript">

Sub word_print

Set objWordDoc=CreateObject("Word.Document")

title=document.all.form1.txt_title.value&CHR(10)

nowtime=document.all.form1.txt_time.value&CHR(10)

table=title&nowtime&document.all.form1.txt_content.value

objWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore(table)

objWordDoc.Application.ActiveDocument.Paragraphs.Add.Range.InsertBefore("")

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

objworddoc.Application.ActiveDocument.SaveAs "如何调用Word进行Web打印"

objWordDoc.application.printout()

End Sub

</script>

5.5.2  打印Access报表

在Microsoft Access数据库中,用户可以根据数据表创建Access报表,从而快速、准确地掌握数据信息。在ASP应用程序中,通过调用Access的相关对象可以打印指定的Access报表。

1.方案分析

Microsoft Access数据库不仅具有强大的数据存储功能,还拥有完善的报表功能,它支持子报、表、多栏报表、图形报表等多种复杂元素。在ASP中,调用Access的Application对象,可以开发直接打印Access报表的程序。

打印Access报表的流程图,如图5.40所示。

打印access报表6

图5.40  打印Access报表流程图

2.实施过程

01  实例位置光盘/mr/5/5.5/5.5.2

在ASP应用程序中直接打印Access报表,可以方便用户对数据库的一些相关操作。下面以新闻网站为例,介绍ASP调用Access的Application对象实现打印Access数据库中新闻报表的功能。运行效果如图5.41所示。

打印access报表7

图5.41  打印Access报表

在Microsoft Access数据库中,可以使用向导创建报表。下面介绍具体创建报表的步骤:

(1)打开Access数据库,单击左侧面板中的“报表”对象,在右侧选择“使用向导创建报表”的命令,打开“报表向导”窗口,在此窗口中选择表及字段名称,如图5.42所示。

图5.42  选择表及指定字段

(2)单击“下一步”按钮,可在打开的窗口中“确定是否添加分组类别”。再单击“下一步”按钮,在打开的窗口中可以确定记录所用的排序次序,如图5.43所示。

图5.43  确定记录所用的排序次序

(3)单击两次“下一步”按钮,分别确定报表的布局方式和所用样式。然后在下一个窗口中为报表指定标题,这里输入“打印新闻报表”,如图5.44所示。最后,单击“完成”按钮成功创建Access报表。

图5.44  定义报表标题

创建Access报表后,在ASP页面中建立表单。在表单中,用户通过选择所要操作的数据库文件以及输入Access数据库中报表的名称,来触发打印Access报表的程序。下面给出表单中关键元素的代码:

例程5-30  代码位置:光盘/mr/5/5.5/5.5.2/index.asp

<form action="" method="post" name="form1" onSubmit="PrintReport()">

Access数据库路径:<input name="txt_db" type="file" id="txt_db">

Access数据库中报表名称:<input name="txt_report" type="text" id="txt_report" title="Access数据库中报表名称">

<input type="submit" name="Submit" value="打印Access报表"  onClick="return Mycheck(this.form)">

<input type="reset" name="Submit2" value="重置表单内容"></td>

</form>

在ASP页面中,自定义一个客户端VBScript脚本的sub过程。在该过程中,首先创建Access的Application对象实例,然后调用对象的OpenCurrentDatabase方法连接所指定的Access数据库,再调用OpenReport方法打印指定名称的Access报表,最后给出打印成功的提示信息。代码如下:

例程5-31  代码位置:光盘/mr/5/5.5/5.5.2/index.asp

<script language="vbscript">

sub PrintReport()

Set pr = CreateObject("Access.Application")

pr.OpenCurrentDatabase document.all.txt_db.value

pr.DoCmd.OpenReport document.all.txt_report.value

pr.CloseCurrentDatabase

Set pr = Nothing

Msgbox "恭喜您,打印Access报表成功!"

end sub

</script>

3.补充说明

编写ASP应用程序所采用的VBScript语言是一种简单的脚本语言,只能实现有限的功能。而使用一些开发工具编写的组件,可以调用各种系统资源,实现较为复杂的功能。微软公司的ASP具有良好的可扩展性,而扩展ASP最有效的途径就是开发自定义的DLL组件,使用DLL组件的优势如下:

(1)实现代码封装技术。在开发程序时,ASP代码是嵌入在HTML语言中的,如果页面设计有变动,设计人员很难对嵌有代码的页面做改动,如果将代码封装在组件中,既方便设计人员进行页面布局,又增强程序的可读性。

(2)起到保护页面源码的作用。ASP程序是无须编译的,即它是以源码的形式存储在服务器上的,源程序很容易被他人获取。而组件是经过编译的,服务器端只有一个编译的DLL文件,保证源代码不被泄漏。

(3)编译好的组件可以重复使用,节约开发时间。

(4)用户将程序开发代码封装在组件中,可以申请知识产权保护其利益。

读者可以尝试使用Visual Basic软件来自定义ActiveX组件,然后调用该组件来实现特定的功能模块。

5.5.3  图形报表打印

图形报表是一种非常直观的数据表现形式,它是通过柱状图、饼型图、折线图等多种图表格式来统计数据的报表形式。在ASP中,可以利用图形报表来统计和处理数据,并进行打印操作等。

1.方案分析

在实际工作中,为了使用户能够以直观的方式查看到数据报表的内在结构,并能够明确报表所表达的含义,可以使用图形报表作为报表的表现形式。在ASP应用程序中,可以调用Visual Basic软件中内置的MSChart组件(MSChart组件是Microsoft提供的ActiveX组件之一,可以使用图形方式显示数据的图表),将数据库中的数据信息以图形的方式展现在页面中,从而实现图形报表打印的功能。

图形报表打印的流程图,如图5.45所示。

图/方案bmp/打印access报表3.bmp

图5.45  图形报表打印流程图

2.实施过程

01  实例位置光盘/mr/5/5.5/5.5.3

在ASP中可以引用外部组件,使用柱状图、折线图等形式将统计数据展现在网页中。下面以网站的销售管理模块为例,介绍在选择查询条件并对商品销售情况进行统计核实时,利用图形报表显示查询结果的过程。运行效果如图5.46所示。

线形标注 2: 打印图形报表图/方案bmp/图形报表打印.bmp

图5.46  图形报表打印

在商品销售统计页面中,提供了按月、按年或者按照具体日期进行销售统计的功能。在默认情况下,是针对所有商品进行销售统计的,用户也可以输入具体的商品编号只针对一种商品进行销售统计。

在程序处理页面中,首先根据选择的统计类型,确定对应的SQL查询语句;然后使用<object>标记嵌入MSChart组件;再通过JavaScript脚本语言设定MSChart组件的各属性值,使查询到的结果以图形方式显示在页面中。代码如下:

例程5-32  代码位置:光盘/mr/5/5.5/5.5.3/index.asp

<%

If Not Isempty(Request("btt_sell")) Then

  txt_Gnum=Request.Form("txt_Gnum")

  txt_type=Request.Form("txt_type")

  txt_amount=Request.Form("txt_amount")

  txt_start=Request.Form("txt_start")

  txt_end=Request.Form("txt_end")

如果用户在商品编号文本框中输入内容,则判断此商品编号是否存在。

  If txt_Gnum<>"" Then

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

    sqlstr="select Gnum from tb_sell where Gnum='"&txt_Gnum&"'"

    rs.open sqlstr,conn,1,1

    If rs.eof or rs.bof Then

      Response.Write("<script language='javascript'>alert('此商品没有销售信息,请重新输入!');history.back();</script>")     

    End If

   rs.close

   Set rs=Nothing

  End If

根据用户选择的统计类型,确定SQL查询语句。获取到的变量txt_type的值如果值为1,则按照商品的销售月份进行分组查询,并统计指定月份的销售金额;如果值为2,则按照商品的销售年份进行分组查询,并统计指定年份的销售金额。

  Select case txt_type

  case "1"

    fig="个月"

    If txt_Gnum<>"" Then

      sqlstr="select * from (select top "&txt_amount&" sum(Smoney) as totals,Month(Sdate) as IssueDate from tb_sell where Gnum='"&txt_Gnum&"' group by Month(Sdate) order by Month(Sdate) desc) as a order by a.IssueDate"

    Else

      sqlstr="select * from (select top "&txt_amount&" sum(Smoney) as totals,Month(Sdate) as IssueDate from tb_sell group by Month(Sdate) order by Month(Sdate) desc) as a order by a.IssueDate"

    End If

  case "2"

    fig="年"

    If txt_Gnum<>"" Then

      sqlstr="select * from (select top "&txt_amount&" sum(Smoney) as totals,Year(Sdate) as IssueDate from tb_sell where Gnum='"&txt_Gnum&"' group by Year(Sdate) order by Year(Sdate) desc) as a order by a.IssueDate"

    Else

      sqlstr="select * from (select top "&txt_amount&" sum(Smoney) as totals,Year(Sdate) as IssueDate from tb_sell group by Year(Sdate) order by Year(Sdate) desc) as a order by a.IssueDate"

    End If

  End Select

通过日期区间统计商品销售情况。

  If txt_start<>"" and txt_end<>"" Then

    If txt_Gnum<>"" Then

     sqlstr="select * from (select sum(Smoney) as totals,Sdate as IssueDate from tb_sell where Gnum='"&txt_Gnum&"' and Sdate between #"&txt_start&"# and #"&txt_end&"# group by Sdate order by Sdate desc) as a order by a.IssueDate"

   Else

      sqlstr="select * from (select sum(Smoney) as totals,Sdate as IssueDate from tb_sell where Sdate between #"&txt_start&"# and #"&txt_end&"# group by Sdate order by Sdate desc) as a order by a.IssueDate"

   End If

  End If

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

  rs.open sqlstr,conn,1,1

  counts=rs.recordcount

%>

使用<object>标记引用MSChart组件,并在JavaScript脚本中定义组件的各属性值,从而将查询到的结果以图表的形式显示在页面表格中。

<table width="600" border="1" align="center" cellpadding="0" cellspacing="0"   bordercolor="#FFFFFF" bordercolorlight="#9CA6C6" bordercolordark="#CCE3FF">

  <tr bgcolor="#FF9933">

    <td height="10" colspan="6" class="word_white">&nbsp; </td>

  </tr>

  <tr align="center" bgcolor="#C8E3FF">

    <td height="14">

<%

if counts>0 then

sum=0

%>

<object classid="clsid:3A2B370C-BA0A-11D1-B137-0000F8753F5D" name="chart" width="100%" height="300">

   <%'定义对象,该对象命名为chart%>

</object>

<% for i=1 to counts

  If txt_amount="" Then txt_amount=1

  If fig="" Then fig="企业"

%>

<script language="javascript">

chart.chartType=1;

chart.ColumnCount=1;   

chart.TitleText="最近 "+<%=txt_amount%>+"<%=fig%>"+" 商品销售情况显示图表 : ";  

chart.rowcount=<%=counts%>;           

chart.row=<%=i%>;                      

chart.rowlabel="<%=rs("IssueDate")%>(月/年/日期)";

chart.Data=<%=rs("totals")%>;         

chart.Footnote="注:纵坐标为销售金额";

</script>

<%sum=sum+rs("totals")

  rs.movenext     

  next           

%>

&nbsp;</td>

  </tr>

  <tr>

    <td height="30" colspan="6">&nbsp; 最近<%Response.Write(txt_amount&fig)%>的销售金额为 <%=sum%>元 </td>

  </tr>

</table>

<br>

引用WebBrowser组件,打印页面中的图形报表。

<object id=WebBrowser classid=ClSID:8856F961-340A-11D0-A96B-00C04Fd705A2 width="0" height="0"></object>

<div align="center"><a href="#" onClick="document.all.WebBrowser.Execwb(8,1)" class="Noprint">页面属性</a> <a href="#" onClick="document.all.WebBrowser.Execwb(7,1)" class="Noprint">打印预览</a> <a href="#" onClick="document.all.WebBrowser.Execwb(6,1)" class="Noprint">打印</a></div>

<%End IF

End IF

%>

3.补充说明

在网络应用程序中,经常会遇到由浏览者自己输入日期的情况,如注册页面中的生日、商品销售中售货日期等,如果输入的日期格式不正确,数据则不能正确保存。为了方便用户操作及保证输入日期格式的正确性,可以在需要输入日期的位置加入Visual Basic的日期拾取组件(Microsoft Date and Time Picker),由用户自己选择日期。如图5.47所示。

图/18-71.bmp

图5.47  调用Microsoft Date and Time Picker组件

DateTimePicker组件是Microsoft提供的ActiveX组件之一,可以返回格式化的日期字段,使得选择日期很容易。在使用DateTimePicker组件之前,应注册MSCOMCT2.OCX文件并安装Visual Basic软件。调用日历组件及获取选择的日期的关键代码如下:

<form name="myform" method="post" action="">

  <tr bgcolor="#FFFFFF">

    <td width="107" height="22" align="right">您选择的日期为:</td>

    <td width="286" height="22"><input name="Date_time" type="text" id="Date_time" onMouseOver="myevent()" onFocus="myevent()"></td>

  </tr> 

</form>

  <tr bgcolor="#FFFFFF">

    <td height="22" align="right">选择日期:</td>

    <td height="22">

<script language="javascript">

function myevent(){

var date=new Date(mydate.value) ;

year=date.getUTCFullYear();

month=date.getUTCMonth()+1;

day=date.getUTCDate();

myform.Date_time.value=year+"-"+month+"-"+day;

//myform.submit();

}

</script>

<object classid="clsid:20DD1B9E-87C4-11D1-8BE3-0000F8754DA1" name="mydate" width="110" height="20">

  <param name="format" value=1>

</object></td>

  </tr>

5.5.4  套打报表

套打是现在应用较为广范的一种打印方式,它是一种在印制有凭证、账簿、报表格式、证书等纸张上进行打印的打印方式,以这种方式进行打印时,无须打印表格的表格线及其他固定的格式内容,有利于加快打印速度、节约打印耗材、延长打印机的使用寿命等。

1.方案分析

在一些工作领域中(例如通信、邮政、商务洽谈、财务等),为了加快工作效率,并为用户提供方便,工作人员通常会将一些常用的业务事项或流程、凭证等事先打印出来,再由用户按照上面的提示进行填写、核实等。

使用ASP开发动态网站时,可以在页面中设计出所需要的格式,然后从数据库中读取所需要的数据,并将数据放置在页面指定的位置,从而实现套打报表的功能。套打报表的流程图,如图5.48所示。

图/方案bmp/套打报表.bmp

图5.48  套打报表流程图

2.实施过程

01  实例位置光盘/mr/5/5.5/5.5.4

在生活和工作过程中,当人们邮寄一些快件时,首先要在快递单上填写邮件的基本信息。在开发动态网站时,为了满足用户需求,可以提供实时打印快递单的功能。下面以电子商务网站的订单信息管理模块为例,介绍套打快递单的实现过程。运行效果如图5.49所示。

线形标注 2: 套打快递单图/方案bmp/套打报表2.bmp

图5.49  套打快递单

在套打快递单页面中,用户可以通过填写寄件人或收件人的姓名来查询快递单的详细信息。程序处理页面根据获取到的表单数据,确定查询的SQL语句,然后将从数据库中读取到的数据添加到页面中指定位置,并应用打印技术执行套打操作。代码如下:

例程5-33  代码位置:光盘/mr/5/5.5/5.5.4/index.asp

<%

Dim SendTime,SendAddress,ReceiveAddress,SendTel,Sender,ReceiveTel,Receiver,ThingsName,PayMoney,ThingsNumber,ThingsWeight,ThingsPrice

sql_type=Trim(Request.Form("type"))

txt_name=Trim(Request.Form("txt_name"))

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

sqlstr="select * from tb_info where 1=1"

根据用户填写的查询条件,确定SQL查询语句。

If txt_name<>"" then

   select case sql_type

   case "0"

   sqlstr=sqlstr&" and sender='"&txt_name&"'"

   case "1"

   sqlstr=sqlstr&" and receiver='"&txt_name&"'"

   end select

End If

rs.open sqlstr,conn,1,1

If rs.eof or rs.bof Then

    Response.Write("<p align=center>暂时不能提供任何信息!</p>")

   Response.End

End if

对查询到信息的进行分页处理。

rs.pagesize=1  '定义每页显示的记录数

pages=clng(Request("pages"))  '获得当前页数

If pages<1 Then pages=1

If pages>rs.recordcount Then pages=rs.recordcount

showpage rs,pages  '执行分页子程序showpage     

Sub showpage(rs,pages)  '分页子程序showpage(rs,pages)

rs.absolutepage=pages   '指定指针所在的当前位置

For i=1 to rs.pagesize  '循环显示记录集中的记录SendTime=Now()

SendAddress=rs("sendAddress")

ReceiveAddress=rs("ReceiveAddress")

SendTel=rs("SendTel")

Sender=rs("Sender")

ReceiveTel=rs("ReceiveTel")

Receiver=rs("Receiver")

ThingsName=rs("ThingsName")

PayMoney=rs("PayMoney")

ThingsNumber=rs("ThingsNumber")

ThingsWeight=rs("ThingsWeight")

ThingsPrice=rs("ThingsPrice")

SendTime=rs("sendTime")

%>

…略,表格信息

<%

  rs.movenext

  If rs.eof Then Exit For

  Next

  End Sub

%>

      <br>

      <table width="450" height="25"  border="0" align="center" cellpadding="-2" cellspacing="0" class="print">

        <tr valign="middle" bgcolor="#FFFFFF">

          <%If Not (rs.eof and rs.bof) Then%>

          <td width="280" height="28"><% if pages<>1 then %>

            <a href=?pages=1>第一页</a> <a href=?pages=<%=(pages-1)%>>上一页</a>

            <%end if

              if pages<>rs.pagecount then %>

            <a href=?pages=<%=(pages+1)%>>下一页</a> <a href=?pages=<%=rs.pagecount%>>最后一页</a>

            <%end if%></td>

          <%If not(rs.Eof and rs.Bof) Then%>

          <td width="220" height="28" align="right" class="word_grey">[<%=pages%>/<%=rs.PageCount%>]&nbsp;&nbsp;每页<%=rs.PageSize%>条&nbsp;&nbsp;共<%=rs.RecordCount%>条信息</td>

    <%End If

     rs.close

     Set rs=Nothing

    End If

   %>

        </tr>

        <tr bgcolor="#000000">

          <td colspan="2" valign="bottom" height="1"></td>

        </tr>

      </table>

      <br>

应用WebBrowser组件进行套打报表的操作。

<object id=WebBrowser classid=ClSID:8856F961-340A-11D0-A96B-00C04Fd705A2 width="0" height="0"> </object>

      <div align="center"><a href="#" onClick="document.all.WebBrowser.Execwb(8,1)" class="Noprint">页面设置</a> <a href="#" onClick="document.all.WebBrowser.Execwb(7,1)" class="Noprint">打印预览</a> <a href="#" onClick="document.all.WebBrowser.Execwb(6,1)" class="Noprint">打印</a></div>

3.补充说明

使用WebBrowser组件执行打印报表操作时,根据报表的实际结构,用户可以通过“页面设置”来定义打印选项,从而使打印能够顺利进行。例如,当纸张纵向打印不适合报表的宽度时,可以调整为“横向”打印;可以设置“页边距”,使报表在指定的纸张位置处进行打印;可以设置打印页面的页眉页脚等。

“页面设置”所包含的选项,如图5.50所示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值