我设计了一个报表,该报表有两个相对独立的记录集(分别用RS1、RS2表示)需要从VB程序中传递过来的,其中RS1有多条记录而RS2只有一条记录,放在报表最末端。
现在的问题是:按不同条件查询RS2在VB中都会有一条记录,但在传到水晶报表里的时候,能把某些RS2过来,但某些RS2却又传不过来即为空值(NULL)——实际上都有记录的。这会是什么原因呢?各位有没有遇到类似的情况,或者帮我分析一下原因,不胜感激!!

解决方案 »

  1.   

    to nfsxy:这是我在VB中把记录集传递到报表的一小段代码,希望你能帮到我。
    Set CRXReport = Nothing
    Set CRXReport = CRXApplication.OpenReport(str_currentpath & "\Report\RMonthly2.rpt")
            
    CRXReport.Database.SetDataSource rs1, 3, 1
    CRXReport.Database.SetDataSource rs2, 3, 2
    FReport.Show 1'显示报表
      

  2.   

    我用的是8.5,我分析如下:
    (1)、检查rs1和rs2,确认在传入时有值,如想传入空值Set rs1=newrecordset即可
    (2)、检查rpt文件,如而记录机在同一个表中,则没问题,如有一个在子表中,则要建立连接
      

  3.   

    to 0211997:你好,谢谢你的分析。
    但现在问题是:RS2确实有值,而且对于空值我已在报表中做了控制即if isnull({ado1.00001}) then 0 else {ado1.00001},但是,这个RS2有些值能正确无误传过去,但有些(不同查询条件结果不一样)去不能传过去。这是某些(对于不同记录集而言)而不是某时(对于同一记录集而言)的问题。我用的也是8。5
    还有RS1、RS2都是查同一个表的。
      

  4.   

    那就这样:
    脱离VB,把那个报表放到crystal里执行,看是否能成功,如成功在放到
    VB里执行应该就可以了
      

  5.   

    以前我做报表,分为ttx和存储过程,你传记录集就是ttx类型的
    如果没问题,就放到vb里,如此时有问题,就先查数据,如确实有数据,
    那就是Crystal的问题,否则就是Vb的问题
      

  6.   

    to zcwhgj:你这个方法倒是行的通,不过又出现了一些其他问题,应该不属于这个范畴的了。谢谢你!!