我在crystal reporter 中 已经做好了一张.rpt的表在代码中我是这么写的
    Dim RP As New CRAXDRT.Report
    Dim RA As New CRAXDRT.Application
    Set RP =RA.OpenReport(App.Path & "\分类生产计划单.rpt")
    rs_c1.Open "select * from 分类生产计划单 where 表单号='" & Label3.Caption & "'", conn_str, 1, 1
    If rs_c1.RecordCount <> 0 Then
        RP.Database.SetDataSource rs_c1
        打印预览.CR.ReportSource = RP
        打印预览.CR.ViewReport
        Screen.MousePointer = 1
        打印预览.Show
     End If
     rs_c1.Close
     Set rs_c1 = Nothing
可是在打印预览中总是不能显示 rs_c1中的数据。
这个是怎么回事?是不是在.rpt中还要做什么设置的啊?我就是在crystal report中直接将sql中的数据添加进去了,没有做什么设置。

解决方案 »

  1.   

    Dim rptApp As New CRAXDRT.Application
    Dim rpt As New CRAXDRT.Report'获取报表
    Set rpt = rptApp.OpenReport(App.Path & "\aa.rpt")''''楼主将rs_cl的获取写全。'给报表设置记录源
    Call rpt.Database.Tables(1).SetDataSource(rs_c1)
    rpt.DiscardSavedData
    打印预览.CR.ReportSource = rpt
    打印预览.CR.ViewReport
    Screen.MousePointer = 1
    打印预览.Show
    rs_c1.Close
    Set rs_c1 = Nothing
      

  2.   

    rpt原文件有没有设置数据源啊,便如:用户定义文件数据源或ole db数据源.
    无的话就要加,否则rpt没有建立内部table对象。
    另rpt文件不要使用数据与文件一同保存一项,否则打印时不接受新的数据源!
      

  3.   

    将下面的代码去掉
    rs_c1.Close
    Set rs_c1 = Nothing因为有这两句,这会引影响到数据的显示。连接也不要关掉。
      

  4.   

    Crystal report用法
    With Crystalreport1
    .windowshowprintsetupBtn=true           ‘//提供一个打印安装
    .connect=”DSN=DSN名称;UID=角色名;pwd=密码;DSQ=数据库名”
    .sqlquery=sql语句
    .reportfilename=”……\*.rpt”
    .formulas(0)=”rs=”kk””        ‘//公式中的引用变量值
    .windowstate=CrptMaxmized
    .pagezoom 100
    .printreport                  ‘//必须要,否不会打印
    .reset
    end with