C# crystal报表上显示的重复数据

C# crystal报表上显示的重复数据,c#,winforms,crystal-reports,C#,Winforms,Crystal Reports,我有一个这样的代码来显示datagridview上的数据,以检查和显示crystal报告 private void PrintReportForm_Load(object sender, EventArgs e) { // Getting result from SQL server database using LINQ to SQL var result = AccessorReports.GetVoucherDetailByVoucherNo(VoucherNo);

我有一个这样的代码来显示datagridview上的数据,以检查和显示crystal报告

private void PrintReportForm_Load(object sender, EventArgs e)
{
      // Getting result from SQL server database using LINQ to SQL
      var result = AccessorReports.GetVoucherDetailByVoucherNo(VoucherNo);

      // Displaying result on data grid view
       dataGridView1.DataSource = result;

       // Displaying result on crystal report
       VoucherRpt cr = new VoucherRpt();
       cr.Load("VoucherRpt.rpt");
       cr.SetDataSource(result);
       crystalReportViewer1.ReportSource = cr;
}
问题是,当数据网格视图显示单个条目时,我在crystal report上获得了重复条目。为什么?附截图

对于数据网格视图中的每个条目,crystal report上都有重复条目。 提前感谢您的帮助:

表格链接方式的屏幕截图


检查crystal report文档中的链接。如果有一个表没有与其他表正确链接,那么它可能会显示类似这样的重复记录。例如,如果另一个表有3条记录,则每条记录将显示3次。如果报告中没有使用任何表,请将其从数据库资源管理器中删除

您正在使用断开连接的数据源方法来显示报告

cr.SetDataSource(result);
此方法将仅显示您在datasource中指定的数据。报表将不会检查sql server中的数据。因此,请确保已分配在数据库资源管理器中选择的所有表数据。例如,如果您的报告中有3个表,那么您的数据集应该包含3个表

//ds.Tables[0] : "table1"
//ds.Tables[1] : "table2"
//ds.Tables[2] : "table3"

cr.SetDataSource(ds);

您好,我已经附上了两张表如何链接的截图。我认为他们联系得很好。原帖截图。在您的C代码中,您正在将结果对象分配给SetDataSource方法。它是否同时具有表数据凭证和凭证详细信息?还有一件事,如果V_NO是主键字段,那么它不应该在报告中显示为空。您是否为该字段启用了SuppressIfDuplicate选项?如果不是,那么它应该显示值。您还应该尝试在不分配数据源的情况下显示报表。我的意思是删除SetDataSource方法并重试。