【问题标题】:Duplicate data displaying on crystal reports水晶报表上显示重复数据
【发布时间】:2015-03-04 23:06:12
【问题描述】:

我有这样的代码可以在 datagridview(检查)和水晶报表上显示数据

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;
}

问题是我在水晶报表上得到重复条目,而数据网格视图显示单个条目。为什么? (附截图)

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

表格链接方式的屏幕截图

【问题讨论】:

    标签: c# winforms crystal-reports


    【解决方案1】:

    检查水晶报表文档中的链接。如果存在未与其他正确链接的表,则它可以显示像这样的重复记录。例如,如果您有另一个包含 3 条记录的表,则每条记录将显示 3 次。如果报表中没有使用任何表,则将其从数据库资源管理器中删除。

    您正在使用 Disconnected DataSource 方法来显示报告。

    cr.SetDataSource(result);
    

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

    //ds.Tables[0] : "table1"
    //ds.Tables[1] : "table2"
    //ds.Tables[2] : "table3"
    
    cr.SetDataSource(ds);
    

    【讨论】:

    • 您好,我附上了两张表如何链接的屏幕截图。我认为它们已正确链接。 (原帖截图)。谢谢
    • 在您的 C# 代码中,您将 result 对象分配给 SetDataSource() 方法。它是否同时具有表数据Voucher_DetailsVoucher?另一件事是,如果V_NO 是主键字段,则它不应在报告中显示blank。您是否为该字段启用了SuppressIfDuplicate 选项?如果没有,那么它应该显示价值。您还应该尝试show 报告而不分配数据源。我的意思是删除SetDataSource 方法并重试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多