转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
Crystal Report(水晶报表)的报表封装成VB的DLL         ★★★★

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1461 更新时间:2009/4/23 18:59:29

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

2003-06-26

 

 

前言:

       Crystal Report(水晶报表)的设计器在VB中有很好的支持,使用设计器开发报表非常的方便,它不但拥有丰富的获取数据的数据源,还拥有良好的可编程接口的支持,是一般报表开发的首先。然而,由于众所周知的原因,VB的程序编译后很大,如果再加上众多的报表设计器的话(由于报表的格式不同,通常都是一个报表建一个设计器来对应),VB的EXE程序将会越来越大(如果有静态图片的话会更大)。为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删除(我们不用这DLL的Form来显示报表,而用调用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 Report的CRViewer控件。

''''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数据据库的登录名

[1] [2]  下一页


[系统软件]用RegDllView揪出所有已注册的dll/ocx  [系统软件]Windows系统的活动大陆基石 细看DLL文件
[系统软件]Windows的活动大陆:细看DLL文件  [常用软件]利用msdvm.dll实现微软虚拟桌面
[VB.NET程序]使用Data Report打印查询结果  [VB.NET程序]使用VB6.0设计ActiveX DLL事件
[VB.NET程序]实现listview控件report视图下任何列头的双向排序  [VB.NET程序]用diskid.dll和disk32.dll获得硬盘序列号
[Delphi程序]输出SHELL32.DLL的图标  [Delphi程序]把图标存储在SHELL32.DLL
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台