【问题标题】:Why crystal reports sub report does not display some fields on viewer为什么水晶报表子报表在查看器上不显示某些字段
【发布时间】:2016-10-31 10:06:04
【问题描述】:

我有主报告和子报告的水晶报告。主报告包含组部分。

我已使用 id 将子报告与主报告相关联。当我在预览选项卡上预览它时,主报表和子报表都在工作并显示正确的数据。

但是,当我使用我的应用程序在查看器上预览它时,主报表数据显示正确,但某些子报表字段不可见。我注意到,当我将 ID 字段放在子报表中查看时,它显示了许多记录。但只显示ID字段,其他字段不可见。

我为主报表和子报表设置了两个记录集。似乎记录正在返回数据,但子报告没有显示它们。谁能指出我正确的方向来解决这个问题?

【问题讨论】:

  • 您在哪里将 ID 字段传递给子报告?会不会去Record Selection Formula

标签: crystal-reports subreport


【解决方案1】:

不确定如何在 Crystal 查看器中加载报表,但请记住,如果您的报表使用子报表,则在加载报表时,您还需要在代码中设置每个子报表的数据源。看下面不完整的代码sn -p:

//SET DATASOURCE FOR EACH SUBREPORT IN REPORT
foreach (CrystalDecisions.CrystalReports.Engine.Section section in CrystalReportSource2.ReportDocument.ReportDefinition.Sections)
{
    // In each section we need to loop through all the reporting objects
    foreach (CrystalDecisions.CrystalReports.Engine.ReportObject reportObject in section.ReportObjects)
    {
        if (reportObject.Kind == ReportObjectKind.SubreportObject)
        {
            SubreportObject subReport = (SubreportObject)reportObject;
            ReportDocument subDocument = subReport.OpenSubreport(subReport.SubreportName);

            foreach (CrystalDecisions.CrystalReports.Engine.Table table in subDocument.Database.Tables)
            {
                // Cache the logon info block
                TableLogOnInfo logOnInfo = table.LogOnInfo;

                // Set the connection
                logOnInfo.ConnectionInfo = crConnectionInfo;

                // Apply the connection to the table!
                table.ApplyLogOnInfo(logOnInfo);
            }
        }
    }
}

【讨论】:

  • 感谢 Douglas Timms,是的,我已经使用您提到的类似循环来设置子报表数据。我确信子报表数据会返回到报表中,因为如果我将它放在具有正确数据数量的报表上,我可以看到正在打印 id 字段。问题是未查看子报告的其他详细信息字段。此外,扩展输出记录的子报表也可以正常工作。有什么想法吗?
猜你喜欢
  • 2012-08-23
  • 1970-01-01
  • 2010-12-30
  • 2017-08-21
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 1970-01-01
  • 2023-03-15
相关资源
最近更新 更多