VB 版 (精华区)
应用程序编制实例之三
六、增强VB的报表制作功能
VB for Windows4.0软件(专业版)中包含一个报表制作软件—Crystal Report简版,该软
件是
一个功能强大的报表制作系统,但因其版本低而且是简本,功能受到一定的限制。下面
介绍Cr
ystal Report4.0增强VB报表功能的方法及使用。
1Crystal Report4.0更新VB的方法
Crystal Report4.0更新VB,只需要覆盖VB报表子目录下的一些文件,例如Crystal Rep
ort4.0
安装在缺省目录“C:\CRW”,VB报表的子目录为“ C:\VB\REPORT”,文件更新和替换步
骤为:
(1)更新CRW.EXE 和CRW.HLP
copy c:\crw\crw.exe c:\vb\report
copy c:\crw\crw.hlp c:\vb\report
(2)增加文件CRSUPREG.DLL和文件CRSUPPRT.DLL
copy c:\crw\crsupreg.dll c:\vb\report
copy c:\crw\crsupprt.dll c:\vb\report
Crystal Report版本更新后,在VB编程环境下,激活菜单“Windows/Report Designer
”,可
以启动新版的Crystal Report。
(3)Crystal.vbx文件更新
2CRPE.DLL的使用
Crystal Report动态链接库CRPE.DLL能够在应用程序中调用Crystal Report的报表模块
,实现
与Crystal Report相同的报表功能,CRPE.DLL支持的语言有C、C++、VB、VC、Delphi
等,下
面介绍VB调用CRPE.DLL的方法。
Declare Function PEOpenPrintJob Lib “CRPE.DLL”(ByVal RptName$)As Integer
Declare Function PEClosePrintJob Lib “CRPE.DLL”(ByVal PrintJob$)As Intege
r
其中PEOpenPrintJob函数开始报表打印工作,PEClosePrintJob子程序关闭报表打印工作
。在
调用时注意指明CRPE.DLL所在的路径,如“C:\CRW\CRPE.DLL”
函数和子程序的声明比较严格,容易出现错误,在编辑时采用下面两种方法中的任意一
种简化
声明工作。
(1)在工程文件(MAK)中,包含文件GLOBAL.BAS,该文件在目录“C:\CRW”下。
(2)在某一编辑器中打开文件GLOBAL.BAS,把需要的声明块拷贝到剪贴板上,然后进入V
B编程环境中,使用PASTE命令将剪贴板中的内容粘贴到VB程序中。
Crystal Reports提供了一个例程CRPEDEMO.MAK,介绍这些函数和子函数的使用方法。下
面的
事件过程Command1_Click()直接向屏幕输出报表ORDERS.RPT。
Sub Command1_Click()
result% = PEPrintReport(″c:\CRW\CODERS.RPT ″, 0, 1, ″报表输出演示″, CW
- USED
EFAULT, CW - USEDEFAULT, CW - USEDEFAULT, CW - USEDEFAULT, 0, 0)
If result% <> 0 Then MsgBox (″报表不能输出″)
End Sub
函数PEPrintReport是一个非常实用的函数,它不需要调用其它任何函数,直接输出(向
打印机
或屏幕)已形成的报表。
3报表控件属性设置
Crystal Report4.0提供的Crystal.vbx的属性更加容易控制。下面的实例介绍了程序在
运行时
更改CrystalReport控件属性的方法。
Sub Commmand1_Click()
Main.Reportl.CopiesToPrinter = Copies.Text ′设置报表调用份数
Main.Reportl.DetailCopies = NDetailCopies.Text ′设置节中调用份数
If Collate.Value = True Then
Main.Reportl.PrintCollation = 1 ′设置是否进行打印份数检验
Else
Main.Reportl.PrintCollation = 0
End If
If StartPage.Tcxt = “”Then
Main.Reportl.PrinterStartPage = 0 '设置打印报表的起始页
Else
Main.Reportl.PrinterStartPage = StartPage.Text
End If
If EndPage.Tcxt = “”Then
Main.Reportl.PrinterStopPage = 0 '设置打印报表的中止页
Else
Main.Reportl.PrinterStopPage = StopPage.Text
End If
If SaveData.Value = True Then
Main.Reportl.DiscardSaveData = False '确定是否存储报表数据
Else
Main.Reportl.DiscardSaveData = True
End If
Main.Reportl.Destination= 1 '输出设置(打印机)
End Sub
使用Crystal Report4.0,会给用户创建表格和编写程序带来极大的方便,读者不妨一试
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.979毫秒