首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Crystal Report SubReports未链接到我的主报表

Crystal Report SubReports未链接到我的主报表
EN

Stack Overflow用户
提问于 2012-08-10 09:13:37
回答 1查看 1.3K关注 0票数 0

我正在使用WPF Crystal Report Viewer,我对它相当满意。

但是,我对Subreports有一个问题。

我第一次尝试链接子报表时的结果是这样的:

代码语言:javascript
复制
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";
}

不幸的是,这不起作用。

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

所以我试了一下:

代码语言:javascript
复制
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";

还是不管用。另一位博客作者建议,DataSets是未来的发展方向。

所以我就这么做了。

代码语言:javascript
复制
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]);

我仍然被提示输入参数值!我已经干了好几个小时了!这不应该这么难!有没有别的想法?有没有什么我没注意到的补丁?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-25 23:11:11

所以我想出了答案。

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

代码语言:javascript
复制
ConnectionInfo.DatabaseName = "myDatabase.mdb";
SetDBLogonForReport(ConnectionInfo, ReportDocument);
ReportDocument.Database.Tables[0].Location = "Table0";
ReportDocument.Database.Tables[1].Location = "Table1";

应该是...

代码语言:javascript
复制
ConnectionInfo.DatabaseName = "myDatabase.mdb";
SetDBLogonForReport(ConnectionInfo, ReportDocument);
ReportDocument.Database.Tables["Table0"].Location = "Table0";
ReportDocument.Database.Tables["Table1"].Location = "Table1";

一旦我这样做了,一切都能正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11894173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档