收录日期:2019/04/18 21:20:11 时间:2016/06/01 15:44:11 标签:数据库(包含打印,安装,报表)
请问哪里有详细的VB操作水晶报表方面的资料,包括如何设计报表及调用语句
水晶报报设计和办公软件应用一样,在调用可以用OCX或用DLL
VB调用并显示、汇出水晶报表代码示例:
Dim Con As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim CRpt As New Rpt1    'Rpt1是dsr格式的水晶报表文件
Dim strSql As String

Private Sub cmdExport_Click()
'汇出当前显示的水晶报表到Excel文件,文件名为"testxls.xls"
    CRpt.ExportOptions.FormatType = crEFTExcel80
    CRpt.ExportOptions.DestinationType = crEDTDiskFile
    CRpt.ExportOptions.DiskFileName = App.Path & "\testxls.xls"
    CRpt.ExportOptions.ExcelExportAllPages = True
    CRpt.ExportOptions.ExcelPageBreaks = True
    CRpt.Export False
    MsgBox "Export to file successfully."
End Sub

Private Sub Form_Load()
'动态赋给水晶报表记录源,并显示报表内容
'CRV为水晶报表显示控件
    strSql = "Provider=sqloledb.1;data source=bgserver;user id=sa;initial catalog=northwind"
    Con.Open strSql
    strSql = "select top 100 * from [orders qry] order by orderid"
    Rst.Open strSql, Con, adOpenStatic, adLockReadOnly, adCmdText
    CRpt.Database.SetDataSource Rst
    CRpt.PaperSize = crPaperA4
    CRpt.PaperOrientation = crPortrait
    CRV.ReportSource = CRpt
    CRV.ViewReport
End Sub
'上例是调用集成VB开发环境里的水晶报表,此例直接调用水晶报表的rpt文件
Dim crApp As New CRAXDRT.Application
Dim crRpt As New CRAXDRT.Report
Dim Con As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim strSql As String

Private Sub Form_Load()
    strSql = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Crystal Decisions\Crystal Reports 9\Samples\chs\Databases\xtreme.mdb;Persist Security Info=False"
    Con.Open strSql
    strSql = "SELECT top 5 客户.*, 订单.* FROM 客户 INNER JOIN 订单 ON 客户.[客户 ID] = 订单.[客户 ID] order by 客户.[客户 ID], 订单.[订单 ID]"
    Rst.Open strSql, Con, adOpenStatic, adLockReadOnly, adCmdText
    Set crRpt = crApp.OpenReport(App.Path & "\order.rpt")
    crRpt.DiscardSavedData
    crRpt.Database.SetDataSource Rst, 3, 1
    crRpt.Database.SetDataSource Rst, 3, 2
    crRpt.EnableParameterPrompting = False
    
    CRV.ReportSource = crRpt
    CRV.DisplayBackgroundEdge = False
    CRV.DisplayGroupTree = False
    CRV.Refresh
    CRV.ViewReport
End Sub
楼主,光给你点代码怕是不够用吧,给你两个专家的Blog:

haibodotnet的专栏
http://blog.csdn.net/haibodotnet/

阿泰的软件实用主义
http://blog.csdn.net/babyt/category/39074.aspx
对了你用这个是做的项目,如果可以的话可以借看看吧
谢谢大家的热心帮助!

leayh(云卷云舒) 
请问在你的程序里,如何加入Rpt1
leayh(云卷云舒)
刚才那个问题解决了,不过在运行到“CRpt.Database.SetDataSource Rst”的时候提示 实时错误'9',下标溢出,请问是什么引起的,数据库已经连上了
搂主,“刚才那个问题解决了”怎么解决的 能告诉我吗  谢谢
搂主,“刚才那个问题解决了”怎么解决的 能告诉我吗  谢谢
点击“工程”——>“添加Crystal Reports 9” ,然后把名字改为Rpt1就可以了

好东东大家一起分享
工程引用-->添加相应类库。
既然问题解决了, 那就请结贴吧。
请问是添加哪个类库啊
自己顶一下
///请问是添加哪个类库啊

有两个类库,要看你是什么样的需求
友情UP
'水晶报表连接串 '在系统初始化时进行
    strRptCn = "DSN = " & strODBC & ";UID =" & strUid _
             & ";Pwd=" & strPWD & ";DSQ = " & strODBC & ""

    '设计好的水晶报表文件所在的路径 '在系统初始化时进行
    strRptPath = App.Path & "\Reprots"

1、在项目中引用水晶报表库:工程->部件->“...”
2、在窗体上添加水晶报表控件:名称为CryRpt。
3、在你的打印代码中,如下调用CryRpt控件:

'其它代码
'初始化打印数据的代码
'其它代码

        With CryRpt
            .Connect = strRptCn '设置水晶报表连接数据库的连接串
            .WindowBorderStyle = crptFixedDouble '水晶报表窗口样式
            .WindowState = crptMaximized '水晶报表窗口最大化
            .WindowControlBox = True '显示水晶报表自身的工具栏
            .ReportFileName = strRptPath & "\rptDayCount.rpt" '要调用的水晶报表文件
            
    '打印时,水晶报表可以说有自己的“窗口”,
    '但是我们一般给它一个单独的窗口,以便于在程序中控制其关闭。
            .WindowParentHandle = frmPrintTmp.hwnd '设置水晶报表窗口的父窗口(句柄)

    '打印到那里?
            'ToWindow表示打印预揽
    'ToPrint表示直接输出到打印机,如果这样的话,就无须设置其父窗口的句柄了;
    '但是一般情况我们都是给客户预揽一下。
            .Destination = crptToWindow
            
            .Action = 1 '激活水晶报表控件(一定要有这一句)
        End With

'其它代码
up
up

一个简单的问题,望指点一二 请问手机WEB功能是怎么实现的?和ISP服务商有关系吗? 想讨论一下CSV文件格式 只有91分了,全给了,请教java2之j2me 软件发布:十三水游戏 如果在VB里调用SYBASE的存储过程??急!急! 如果在VB里调用SYBASE的存储过程??急! 怎么在javascript中判断本页的复选框是否选中?(wang0821提问) 我要完了???????????? ADODataSet 的 OnFetchProgress 事件的问题 请问netants和jetcar的下载原理 Java新手,问个土问题,100分! 怎么把数据库查询结果与报表联系起来 一个项目从开始到结束,需要做哪些文档? 我要考研!!!!!!!!!!!!!!!!!!!! 送分小问题:怎样调用外部程序作为模块使用(LoadModule方法) 软件发布:网上考试系统 怎样获得Grid风格DataWindow的第一个可见行? 我完了???????????????? 我想考研!!!!!!!!!!!!!!!!!!!! 所有有问题的人都应该进来看看 谢谢!!!请问国内外比较好的PB邮件列表或新闻组有哪些? 测试一个网络多线程的软件 想把一个目录共享,在WIN32API中用哪个函数? 想把一个目录共享,在WIN32API中用哪个函数,?? 想把一个目录共享,在WIN32API中用哪个函数,谁记得? 关于“一个女孩的临终留言” 我这种水平的会有人要么? 有感于各位大哥的发言,不禁让我又想问一句,计算机毕业(本科)后到底能干些什么,或是该干些什么? 三问:mailto的语法、邮件附件???