VB中怎样使用水晶报表.doc
文本预览下载声明
水晶报表(Crystal Report)的业内最专业、功能最强的报表系统,它除了强大的报表功能外,最大的优势是实现了与绝大多数流行开发工具的集成和接口。在VS.Net平台做过报表开发的程序员,一定都对水晶报表强大、高效、集成等特性留下了深刻印象。除了开发新程序外,在工作中我们常需要接触到很多较早的软件系统报表功能升级的需求,如果能结合水晶报表这一强大的工具,往往能事半功倍。
VB是以前流行的数据库开发平台,用其开发的C/S系统在社会上有非常大的保有量,但VB超弱的报表功能往往让程序员面对客户的升级要求一筹莫展。本文并不做水晶报表的使用和编程教学,实际上水晶报表本身的使用方法和VS.Net平台并没有太大的差别,我主要是和大家探讨一下VB和水晶报表的一种较方便的接口方式。我的开发测试平台是Windows2003 Standard简体中文版、VB6.0+sp5英文版、Crystal 9.0简体中文开发版。
关于在水晶报表中制作报表模板的方法,并非本文的探讨范围,读者可以参考Crystal Report的帮助文件和官方网站的技术资料。简单地说,首先要通过水晶报表的数据库引擎手动连接相应的表结构,制作报表模板,并保存为rpt文件,该项操作和利用VB自带的报表工具制作报表大同小异。
用VB调用水晶报表进行报表开发的简单接口方法就是,在水晶报表中用仅字段定义来获得字段分布文件,用虚拟的文件创建表字段,用CRAXDRT对象来强制改变数据源(ADO.recordset),其效果相当于在VB中调用了rpt文件。下面分步骤介绍编程方法。
第一步:
在VB工程中Project菜单加入Add Crystal Report 9,报表名使用默认即可。这时Form2(Crystal Rerport自动添加的Form,假设名为Form2)被自动分配了如下代码:
Option Explicit
dim Report as New Cystal1
Private Sub Form_Load()
Screen.MousePointer = vbHourglass 调用水晶报表时置鼠标为沙漏状
CRViewer91.ReportSource = Report 该语句的赋值将在后面被修改
CRViewer91.ViewReport
Screen.MousePointer = vbDefault 调用水晶报表完成后置鼠标为默认形状
End Sub
Private Sub Form_Resize()
CRViewer91.Top = 0
CRViewer91.Left = 0
CRViewer91.Height = ScaleHeight
CRViewer91.Width = ScaleWidth
End Sub
第二步:
点击Crystal Report设计器的数据库字段,选定数据库专家...,然后点创建新连接,再点仅字段定义,创建数据库定义文件,字段名和宽度和原数据库表保持一致。最后,在数据库字段中获得了相应字段,将其置于报表上,按水晶报表的要求配置。
第三步:
该步骤非常关键,添加一个Modual到工程文件中,定义全局的ADODB变量,实现数据库和水晶报表的动态连接。代码如下:
Public conn As New ADODB.Connection
Public rs As New ADODB.Recordset
第四步:
关于VB程序的ADO数据库连接注意事项,请看下面的打印按钮例程。
Private Sub Command1_Click()
Dim connstr As String
If conn.State = adStateOpen Then conn.Close
connstr = Provider=Microsoft.Jet.OLEDB.4.0;Data Source= App.Path \prtest.mdb;Persist Security Info=False prtest.mdb是程序当前目录的测试Access数据库
conn.ConnectionString = connstr
conn.Open
conn.CursorLocation = adUseClient
If rs.State = adStateOpen Then rs.Close
rs.Open test, conn, adOpenKeyset, adLockReadOnly
Report.Database.SetDataSource rs, 3, 1 此行取消
Form2.Show 1 数据库连接完成后,调用Form2水晶报表工程
End Sub
需要提请大家注意的是,上面代码中的Report.Database.SetDataSou
显示全部