如何在主要详细信息表的水晶报表中设置子报表的数据源

时间:2014-06-02 08:00:19

标签: c# crystal-reports subreport

enter image description here

我有这两个表,我想生成一个水晶报告,其中我有一个子报告,按商店列出所有订单。但我有问题设置子报告的数据源。

ReportsDataSetTableAdapters.StoreTableAdapter adp = new ReportsDataSetTableAdapters.StoreTableAdapter();
MainOrderReport report = new MainOrderReport();
ReportsDataSetTableAdapters.OrderTableAdapter del = new ReportsDataSetTableAdapters.OrderTableAdapter();
report.Subreports[0].SetDataSource(del.GetData().DefaultView);
report.SetDataSource(adp.GetData().DefaultView);
crystalReportViewer.ReportSource = report;
crystalReportViewer.Refresh();

但是这段代码抛出了这个异常: “无法启用约束。一行或多行包含违反非空,唯一或外键约束的值”。 请帮助我,我在这里失踪了。

2 个答案:

答案 0 :(得分:0)

首先尝试清除连接:

report.Subreports[0].DataSourceConnections.Clear();
report.Subreports[0].SetDataSource(adp.GetData().DefaultView);
crystalReportViewer1.ReportSource = report;
crystalReportViewer1.Refresh();

答案 1 :(得分:0)

根据您提供的DataSet图片,您的OrderDataTableStoreDataTable的孩子。在您的代码中,您先填充您的孩子,然后再填写您的孩子。在你的DataSet中,你已经在两个表之间定义了一个约束。

这可能是您收到此错误的原因。首先尝试填充父表,然后填充子表。