首 页文章中心下载中心繁體中文
设为首页
加入收藏
联系我们
您当前的位置:开源盛世-源代码下载网 -> 文章中心 -> V B 专区 -> 文章内容 退出登录 用户管理
栏目导航
· VC++专区 · V B 专区
· GIS 专区 · PDA 专区
· 其他编程 · 网站开发类
· 数据库类 · 软件应用
· 网络安全 · 论文专区
· 综合资讯
热门文章
· Tab Control控件使用...
· 学生档案管理系统
· [图文] 排列组合公式
· UTF-8与GB2312之间的...
· DirectShow下载安装...
· Virtual PC 在PAE模...
· Windows2000终端服务...
· MapInfo上的GIS系统...
· Mapbasic参考手册索...
· MapX应用开发中文讲...
相关文章
· 再谈在VB中调用VC++...
· 介绍几个与 Crystal...
· 在C#中使用C/C++写的...
Crystal Report(水晶报表)的报表封装成VB的DLL
作者:佚名  来源:vscodes.com整理  发布时间:2005-12-16 13:48:31  发布人:Polaris

减小字体 增大字体

Crystal Report(水晶报表)的报表封装成VBDLL

2003-06-26

 

 

前言:

       Crystal Report(水晶报表)的设计器在VB中有很好的支持,使用设计器开发报表非常的方便,它不但拥有丰富的获取数据的数据源,还拥有良好的可编程接口的支持,是一般报表开发的首先。然而,由于众所周知的原因,VB的程序编译后很大,如果再加上众多的报表设计器的话(由于报表的格式不同,通常都是一个报表建一个设计器来对应)VBEXE程序将会越来越大(如果有静态图片的话会更大)。为EXE程序减负的方法之一便是使用ActiveX DLL,使它从EXE程序中分离出去,实现动态加载。这样既减少了EXE程序的体积,又减少了运行时VB程序对内存的占用,同时这种分离能使程序的结构更清晰逻辑更合理。下面这一过程的具体实现。

 

实现过程:

              在开发之前请安装VB6.0的任一版本,并安装好Crystal Report8.5开发版或是专业版。并确认在crystal report安装是选上了Developer Components

1、  打开VB,新建一ActiveX DLL工程,系统会自动生成一个类Class1,把该类改名为clsCryReport,把系统的工程名也改名为ProjCryReport

2、  单击工程菜单,选“更多ActiveX设计器”,选取“Crystal reports 8.5”,新建一个空的设计器(新建报表时选择“As a Blank Report)。并将设计器改名为:cryTestDllReport,并将随之新建的一个Form删除(我们不用这DLLForm来显示报表,而用调用DLL的程序来负责显示报表)。

3、  为报添加数据库源:具体做法是在报表区域点击鼠标右键,选取“DataBase”,选“Add DataBase to Report”,选择“More Data  Sources”中的“Active Data”,“Field Definitions Only”,新建一个数据集的字段定义,并将该记录集的定义保存成一个后缀为ttx的文本文件。内容如下:

Staff_id    Long             

Name       String      20   

Age   Long             

Addr String      50   

最后将其加入(Add)报表。

4、  把这一些字段排好到设计器的Details区,并根据需要对表头进行设置。

5、  回到clsCryReport,在类中加入如下的代码:

Option Explicit

Dim cry As New cryTestDllReport

 

Public Sub ShowReport(ByVal frm As Object, ByVal rsCryTestDll As ADODB.Recordset)

    'frm是用于传递显示报表的窗体对象的,该窗体需要有Crystal ReportCRViewer控件。

'rsCryTesllDll是报表显示的数据记录集。

cry.Database.SetDataSource rsCryTestDll

    frm.CRViewer.ReportSource = cry

    frm.CRViewer.ViewReport

End Sub

6、  将该工程编译成DLL文件,文件名为:ProjCryReport.DLL

7、  新建一VB “标准EXE”工程。

8、  加入“Crystal Report Viewer Control”控件到Form中。把它命名为CRViewer,一定要与上面的名字一致,并通过VB“工程―引用”菜单引用上面我们生成的DLL文件:ProjCryReport.DLL

9、  添加一按钮cmdShowReport,并在该窗体内写入如下代码:

Option Explicit

Dim cryShow As New clsCryReport         '这里是声明一个报表类的对象

Dim cn As New ADODB.Connection          '声明一个数据库的连接

Dim rs As New ADODB.Recordset           '记录集对象

 

Private Sub cmdShowReport_Click()

rs.Open "select staff_id,name,age,addr from tbs_staffInfo", _

        GetConnection, adOpenDynamic, adLockReadOnly  '连接数据库,获取表中的记录。

cryShow.ShowReport Me, rs           '调用类中的函数ShowReport,并传递相关的参数。

End Sub

 

'**

'获取与数据库的连接。

'@return       ADODB.Connection.

Public Function GetConnection() As ADODB.Connection

Dim DataBasePassword As String

Dim DataBaseServerName As String

Dim DataBaseUserName As String

On Error GoTo ErrHand

    If cn.State = adStateOpen Then

        Set GetConnection = cn

    Else                                       '从注册表获取连接串。

                                                    

        DataBasePassword = ""            '数据库登陆密码,这里为空

        DataBaseServerName = "newReport"       'Oracle数据库的服务名

        DataBaseUserName = "newReport"           'Oracle数据据库的登录名

   

        cn.ConnectionTimeout = 5

        cn.CursorLocation = adUseClient

        cn.ConnectionString = "Provider=MSDAORA.1;Password=" + DataBasePassword + ";User ID=" + DataBaseUserName + _

        ";Data Source=" + DataBaseServerName + ";Persist Security Info=True"  '数据库连接字符串。

        cn.Open                '打开数据连接。

        Set GetConnection = cn

    End If                 '结束If Cn.State = adStateOpen

    Exit Function

ErrHand:

       MsgBox "1.请设置数据服务或检查服务器否正常工作。 " & Chr(13) & "2.网络是否正常工作。" & Chr(13) _

            & "3.如果上述问题不能解决问题,敬请与管理员联系。", vbExclamation, "网络连接"

       End

End Function

 

10、单击显示报表,会出现下图的结果。至此我们的报表与EXE程序分离的工作已经完成,只需要把这一个EXE文件编译后就可以分发了。

 


End of《Crystal Report(水晶报表)的报表封装成VB的DLL》

[] [返回上一页] [打 印] [收 藏]
 
∷相关“Crystal Report(水晶报表)的报表封装成VB的DLL”文章评论∷
(评论内容只代表网友观点,与本站立场无关!) [更多评论...]
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 网站目录 鄂ICP备06007162
开源盛世 版权所有Copyright © 2003-2005 VSCodes.Com. All Rights Reserved.