Crystal Report子报告未链接到我的主报告

时间:2012-08-10 01:13:37

标签: c# wpf crystal-reports dataset crystal-reports-2010

我正在使用WPF Crystal Report Viewer,我对此感到非常满意。

但是,我在Subreports上遇到了问题。

我第一次尝试链接子报表的做法是这样的:

ReportDocument.Load(Response.ReportsPath + "\\myReport.rpt");
ConnectionInfo.DatabaseName = "myDatabase.mdb";
SetDBLogonForReport(ConnectionInfo, ReportDocument);
ReportDocument.Database.Tables[0].Location = "Table0";
ReportDocument.Database.Tables[1].Location = "Table1";
foreach (var document in ReportDocument.Subreports.OfType<ReportDocument>())
{
    SetDBLogonForReport(ConnectionInfo, document);
    document.Database.Tables[0].Location = "CommonSubreportTable";
}

不幸的是,这不起作用。

我尝试了许多不同的解决方案。一位博主建议你必须在主报告之前设置子报告。

所以我尝试了这个:

ReportDocument.Load(Response.ReportsPath + "\\myReport.rpt");
foreach (var document in ReportDocument.Subreports.OfType<ReportDocument>())
{
    SetDBLogonForReport(ConnectionInfo, document);
    document.Database.Tables[0].Location = "CommonSubreportTable";
}

ConnectionInfo.DatabaseName = "myDatabase.mdb";
SetDBLogonForReport(ConnectionInfo, ReportDocument);
ReportDocument.Database.Tables[0].Location = "Table0";
ReportDocument.Database.Tables[1].Location = "Table1";

仍然没有工作。另一位博客建议DataSet是可行的方法。

所以,我做到了。

ConnectionInfo.DatabaseName = "MyDatabase.mdb";

foreach (ReportDocument document in ReportDocument.Subreports)
{
    document.SetDataSource(response.Dst);
}
ReportDocument.Database.Tables[0].SetDataSource(response.Dsx.Tables[0]);
ReportDocument.Database.Tables[1].SetDataSource(response.Dsc.Tables[0]);

我仍然被提示输入参数值!我已经在这里待了几个小时!这应该不是这么难!任何人有任何其他想法???是否有我修改过的修补程序或其他内容?

1 个答案:

答案 0 :(得分:0)

所以我想出了答案......

显然我必须根据表名设置表位置,而不是索引。

ConnectionInfo.DatabaseName = "myDatabase.mdb";
SetDBLogonForReport(ConnectionInfo, ReportDocument);
ReportDocument.Database.Tables[0].Location = "Table0";
ReportDocument.Database.Tables[1].Location = "Table1";

原本应该......

ConnectionInfo.DatabaseName = "myDatabase.mdb";
SetDBLogonForReport(ConnectionInfo, ReportDocument);
ReportDocument.Database.Tables["Table0"].Location = "Table0";
ReportDocument.Database.Tables["Table1"].Location = "Table1";

一旦我这样做,一切都正常。