我有这两个表,我想生成一个水晶报告,其中我有一个子报告,按商店列出所有订单。但我有问题设置子报告的数据源。
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();
但是这段代码抛出了这个异常: “无法启用约束。一行或多行包含违反非空,唯一或外键约束的值”。 请帮助我,我在这里失踪了。
答案 0 :(得分:0)
首先尝试清除连接:
report.Subreports[0].DataSourceConnections.Clear();
report.Subreports[0].SetDataSource(adp.GetData().DefaultView);
crystalReportViewer1.ReportSource = report;
crystalReportViewer1.Refresh();
答案 1 :(得分:0)
根据您提供的DataSet
图片,您的OrderDataTable
是StoreDataTable
的孩子。在您的代码中,您先填充您的孩子,然后再填写您的孩子。在你的DataSet
中,你已经在两个表之间定义了一个约束。
这可能是您收到此错误的原因。首先尝试填充父表,然后填充子表。