首页 > 解决方案 > Crystal Report vb.net使用没有关系表的子报表

问题描述

我在水晶报表中使用了 2 个子报表。这两份报告彼此之间没有任何联系或关系。但与有证据的主要报告有关系。

在此处输入图像描述

我的代码:

    dim mReport As New CrystalDecisions.CrystalReports.Engine.ReportDocument
    dim querymain, query1, query2 As String

    mReport = New CrystalReport1
    querymain = "SELECT * from tblmain where evidence = '" & EvD & "'"
    Call DataSourceConnection_Report() 'my setconnection and setlogon
    mReport.Database.Tables(0).SetDataSource(ExecuteSQLQuery(querymain))

    query1 = "SELECT * FROM tbl1 WHERE EVIDENCE = '" & EvD & "'"
    mReport.Subreports("sub2").SetDataSource(ExecuteSQLQuery(query1))

    query2 = "SELECT * FROM tbl2 WHERE EVIDENCE = '" & EvD & "'"
    mReport.Subreports("sub3").SetDataSource(ExecuteSQLQuery(query2))
    CrystalReportViewer1.Refresh()
    CrystalReportViewer1.ReportSource = mReport

但它只会显示我的主要报告数据并将我的子报告留空。

如何填写我的子报告?

标签: vb.netcrystal-reportscrystal-reports-2010

解决方案


您应该实例化您的子报告,例如:

mReport As New CrystalReport1
querymain = "SELECT * from tblmain where evidence = '" & EvD & "'"
Call DataSourceConnection_Report()
mReport.Database.Tables(0).SetDataSource(ExecuteSQLQuery(querymain))

Dim sub2 As CrystalDecisions.CrystalReports.Engine.ReportDocument
sub2 = mReport.OpenSubreport("sub2")
sub2.SetDataSource(ExecuteSQLQuery(query1))

Dim sub3 As CrystalDecisions.CrystalReports.Engine.ReportDocument
sub3 = mReport.OpenSubreport("sub3")
sub3.SetDataSource(ExecuteSQLQuery(query2))

推荐阅读