ADO记录集和水晶报表

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

 

在使用水晶报表时,经常会感到数据不是很好控制,最后只好使用这个终极绝招咯。那就是使用数据定义文件(TTX),把得到的ADO记录集传送给水晶报表。

通常情况下,水晶报表是从物理的数据库上创建出来的,但是现在有了32位的Active Data Driver-- P2smon.dll,水晶就可以不用再事先连接到一个数据库上咯。

首先,需要创建一个TTX文件,进入数据源选择窗体后,如下图选中

再单击了前面的“+”后弹出数据源窗体

 

此时,我们使用“New”按钮创建一个新的数据定义文件(TTX),格式如下

保存后,我们打开这个文本文件,就会发现TTX文件的格式,原来中间是TAB分割符来的。

接着,我们就按照水晶报表的老套路画式样,剩下的就是传递记录机集了。

下面,我们要声明好传递ADO记录集需要的Api

Public Declare Function PEOpenEngine Lib "crpe32.dll" () As Integer

 

Public Declare Function PEGetErrorCode Lib "crpe32.dll" (ByVal printJob As Integer) As Integer

 

Public Declare Function PEOpenPrintJob Lib "crpe32.dll" (ByVal RptName As String) As Integer

 

Public Declare Function PEOutputToWindow Lib "crpe32.dll" ( _

                                                            ByVal printJob As Integer, _

                                                            ByVal Title As String, _

                                                            ByVal Left As Long, _

                                                            ByVal Top As Long, _

                                                            ByVal Width As Long, _

                                                            ByVal Height As Long, _

                                                            ByVal style As Long, _

                                                            ByVal PWindow As Long) As Integer

 

Public Declare Function PEOutputToPrinter Lib "crpe32.dll" ( _

                                                            ByVal printJob As Integer, _

                                                            ByVal nCopies As Integer) As Integer

                                                           

Public Declare Function PEStartPrintJob Lib "crpe32.dll" ( _

                                                            ByVal printJob As Integer, _

                                                            ByVal WaitOrNot As Integer) As Integer

                                                           

Public Declare Function PEClosePrintJob Lib "crpe32.dll" (ByVal printJob As Integer) As Integer

 

Public Declare Sub PECloseEngine Lib "crpe32.dll" ()

 

Public Declare Function CreateFieldDefFile Lib "p2smon.dll" ( _

                                                            lpUnk As Object, ByVal _

                                                            fileName As String, _

                                                            ByVal bOverWriteExistingFile As Long) As Long

       

Public Declare Function vbEncodelPtr Lib "p2smon.dll" (x As Object) As String

 

Public Declare Function SetActiveDataSource Lib "p2smon.dll" ( _

                                                                ByVal printJob As Integer, _

                                                                ByVal tableNum As Integer, _

                                                                x As Object) As Long

 

最后给出的是报表的打印代码

Dim Job As Integer

Dim Handle As Integer

'打开打印引擎

Handle = PEOpenEngine

'水晶的错误处理

If Handle = 0 Then

    ErrorNum = PEGetErrorCode(Handle)

    MsgBox "打印引擎出错!"

    MsgBox "错误代号:" & ErrorNum

End If

 

'打开打印作业

Job = PEOpenPrintJob(App.Path & "/New.rpt")

'水晶的错误处理

If Job = 0 Then

    ErrorNum = PEGetErrorCode(Job)

    MsgBox "打开作业New.rpt 失败!"

    MsgBox "错误代号:" & ErrorNum

End If

'给水晶报表传送ADO记录集,AdoRecordset的生成就不再多说了

Handle = SetActiveDataSource(Job, 0, ADOrs)

'输出到打印预览窗口

Handle = PEOutputToWindow(Job, "New.rpt", 0, 0, 520, 520, WS_MAXIMIZE, 0)

直接输出到打印机

Handle = PEOutputToPrinter(Job,1)

'水晶的错误处理

If Handle <> 0 Then

Handle = PEStartPrintJob(Job, True)

    If Handle <> 0 Then

        MsgBox "打印完毕"

    Else

        ErrorNum = PEGetErrorCode(Job)

        MsgBox "打印失败!"

        MsgBox "错误代号:" & ErrorNum

    End If

Else

    ErrorNum = PEGetErrorCode(Job)

    MsgBox "无法输出到窗体或打印机"

    MsgBox "错误代号:" & ErrorNum

End If

'关闭打印作业

PEClosePrintJob (Job)

'关闭打印引擎

PECloseEngine

 

我使用的是VB6+水晶报表8.5,感觉这种方式比较灵活好用,同时解决了水晶报表补空行的问题。

官方水晶报表 .NET 应用程序实例下载 (Visual Basic .NET) 水晶报表使用 Visual Basic .NET 开发的 .NET 应用程序实例列表----------------------------------概述本文档列出了 Crystal Decisions 技术支持网站上所有可用的,使用 Visual Basic .NET 开发的 .NET 应用程序实例列表。本文档还给出了每一个程序的描述下载链接。随着新程序加入我们的支持站点,本文档 阅读详情

相关推荐

VB6调用水晶报表实例

在vb调用水晶报表时通常采用RPT格式,但有时可以使用ttx格式来实现。

水晶报表

<br />水晶报表这个东西,我在公司已经玩了两年多了,基本掌握了,来share一下。<br /> <br />1,工欲善其事,必先利其器<br />    请先了解一下水晶报表的结构,结构熟悉了,后面的事情就比较简单了。<br /> <br /><br /> <br />2,十年磨一剑,霜刃未曾试<br />     我这边说说水晶报表数据源设置的方法,当然是脱离数据的方式:<br />      1,适用于.net的方式。使用DataSet作为数据源,这样就可以在水晶报表模板上进行拖拽了。<br /> 

boy_tools的专栏 735

关于ttx文件里面的字段定义改变以后对水晶报表的更新

环境:Crystal Reports 10 + Asp.net2003 问题:当改变了ttx文件里面的字段后定义如何更新到水晶报表的数据源字段 解决步骤:1、安装“仅字段定义”:数据库专家——创建新连接——双击“文件系统数据” 安装——重起计算机(如果“创建新连接”中已经有“仅字段定义”则不需要此步骤)。2、更新数据源:设置数据源位置——在“替换为”区域选创建“仅字段定义”

xwty1225的专栏 1601

[水晶报表]水晶报表的使用经验资料总结

水晶报表的使用经验资料总结资料: Asp.Net中使用水晶报表(上) www.dotnet8.com 2002-9-6 DotNet吧[HTML]在我们对VS.Net中的水晶报表(Crystal Reports)进行研究之前,我我朋友对如何将这个复杂的东东加入我们的Web应用有着非常的好奇心。一周以后,在阅读了大量的”HOWTO”文档之后,我们成功地将一些简单的报告加入到了我们的Asp.

德仔 7930

水晶报表使用经验总结

转自    http://blog.csdn.net/louisp/archive/2005/10/27/517621.aspx   资料:Asp.Net中使用水晶报表(上)www.dotnet8.com  2002-9-6  DotNet吧 这篇文章教你如何在.Net Web应用中使用水晶报表,也可以让你在学习过程中少走一些弯路。为了得到最好的效果,读者最好需要有一些基础的Asp.Net访问数据

雁南飞的专栏 2万+

水晶报表的一个小小的例子

这次我们做了一个程序.访问数据库:         使用数据库访问中间件,只要写一个XML文件,通过Hibrate访问到真正的数据库,它将会返回一个XML文档给我们做为记录集.做报表使用的方式:      生成静态的报表.写出一个TTX文件.基于这个做一个静态报表.把一些需要显示的内容都把它谋划好.还有一些公式也要做好.之后,数据来源是这样的.读出XML文档中的记录集,打开一个没有连接到数据库上的

阿彪的Blog 2048

.NET环境下水晶报表使用总结

.NET环境下水晶报表使用总结水晶报表是一个优秀的报表开发工具,本人在开发通用管理系统的时候,所有报表都使用水晶报表,其简单、易用强大的功能令笔者倍加喜爱,现将水晶报表使用手记呈现给大家。 一、在使用自带的水晶报表时,请注册,否则只能使用30次水晶报表注册码注册号:6707437608密码:AAP5GKS0000GDE100DS 二、使用CrystalReportView

李洪根的blog-专注软件开发技术 8160

水晶报表使用方法

在vs.net2003中集成有水晶报表,但水晶报表也可以是一个独立的软件包,可以购买到。以下的水晶报表的常规使用方法:CrystalReportViewer控件允许在应用程序中查看 Crystal Report。ReportSource 属性用于设置要查看哪个报表。该属性设置之后,报表显示在查看器中。报表源可以是ReportDocument、报表文件的路径,也可以是强类型报表。1.      打开

咖啡茶 2793

水晶报表使用总结

水晶报表是一个优秀的报表开发工具,本人在开发通用管理系统的时候,所有报表都使用水晶报表,其简单、易用强大的功能令笔者倍加喜爱,现将水晶报表使用手记呈现给大家。   一、在使用自带的水晶报表时,请注册,否则只能使用30次  水晶报表注册码  注册号:6707437608  密码:AAP5GKS0000GDE100DS   二、使用CrystalReportViewer进行预览  C

雁南飞的专栏 1370

水晶报表使用

 水晶报表是一个优秀的报表开发工具,本人在开发通用管理系统的时候,所有报表都使用水晶报表,其简单、易用强大的功能令笔者倍加喜爱,现将水晶报表使用手记呈现给大家。 一、在使用自带的水晶报表时,请注册,否则只能使用30次水晶报表注册码注册号:6707437608密码:AAP5GKS0000GDE100DS 二、使用CrystalReportViewer进行预览CrystalReportViewe

pengdean的专栏 844

水晶报表的使用技巧

水晶报表是一个优秀的报表开发工具,本人在开发通用管理系统的时候,所有报表都使用水晶报表,其简单、易用强大的功能令笔者倍加喜爱,现将水晶报表使用手记呈现给大家。 crystalreportviewer控件允许在应用程序中查看 Crystal Report。ReportSource 属性用于设置要查看哪个报表。该属性设置之后,报表显示在查看器中。报表源可以是ReportDocument、报表文件...

weixin_30455067的博客 251

NET中水晶报表的使用

=====================================================http://www.newasp.net/tech/net/12426.html 一、在使用自带的水晶报表时,请注册,否则只能使用30次水晶报表注册码注册号:6707437608密码:AAP5GKS0000GDE100DS 二、使用CrystalReportViewer进行预览Cry

lotus_zal的专栏 2116

.NET环境下水晶报表使用总

水晶报表是一个优秀的报表开发工具,本人在开发通用管理系统的时候,所有报表都使用水晶报表,其简单、易用强大的功能令笔者倍加喜爱,现将水晶报表使用手记呈现给大家。   一、在使用自带的水晶报表时,请注册,否则只能使用30次  水晶报表注册码  注册号:6707437608  密码:AAP5GKS0000GDE100DS   二、使用CrystalReportViewer进行预览  CrystalRe

小发猫 1308

水晶报表】创建报表

水晶报表是一个优秀的报表开发工具,本人在开发通用管理系统的时候,所有报表都使用水晶报表,其简单、易用强大的功能令笔者倍加喜爱,现将水晶报表使用手记呈现给大家。     一、在使用自带的水晶报表时,请注册,否则只能使用30次     二、使用CrystalReportViewer进行预览     CrystalReportViewer控件允许在应用程序中查看 Crystal Report。Repo

Taskcnjia的专栏 692

水晶报表2

作者:李洪根       出处:Mscommunity 水晶报表是一个优秀的报表开发工具,本人在开发通用管理系统的时候,所有报表都使用水晶报表,其简单、易用强大的功能令笔者倍加喜爱,现将水晶报表使用手记呈现给大家。一、在使用自带的水晶报表时,请注册,否则只能使用30次二、使用CrystalReportViewer进行预览crystalreportviewer控件允许在应用程序中查看

nic1983的专栏 686
上一篇: 用VB处理定长文本的导入
下一篇: .NET中的DataReader简介
40Star
博客等级 码龄25年 1粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值