如何使用数据集中的 2 个 sql 请求和 2 个数据表在水晶报表中显示数据?

Posted

技术标签:

【中文标题】如何使用数据集中的 2 个 sql 请求和 2 个数据表在水晶报表中显示数据?【英文标题】:How to display data in crystal report using 2 sql request and 2 datatables in dataset? 【发布时间】:2015-04-22 12:19:46 【问题描述】:

我有一个包含 2 个数据表的数据集,我需要使用 2 个 sql 请求在水晶报表中显示数据。所以我在我的数据集中创建了 2 个数据表(DataTable1 和 dataTable2)我尝试了这段代码,但它总是执行第二个 sql 请求!!

con.ConnectionString = @"connection";

string sql = "MyRequest1";
string sql1 = "MyRequest2";

DataSet1 ds = new DataSet1();  

SqlDataAdapter dad = new SqlDataAdapter(sql, con);
SqlDataAdapter dad1 = new SqlDataAdapter(sql1, con);

dad.Fill(ds.Tables["DataTable1"]);
dad1.Fill(ds.Tables["DataTable2"]);

CrystalReport1 report = new CrystalReport1();

report.SetDataSource(ds.Tables["DataTable2"]);
report.SetDataSource(ds.Tables["DataTable1"]);

crystalReportViewer1.ReportSource = report;

crystalReportViewer1.Refresh();

【问题讨论】:

这两个表格在报告中是分开的表格吗? (例如***.com/questions/2910911/…) 你可以看到下面的解决方案:) 【参考方案1】:

您需要将数据表合并为一个并设置它们。每次使用数据表调用 SetDataSource 时,都会覆盖以前的数据。

使用Merge() 功能来实现这一点-

DataTable dt = ds.Tables["DataTable2"];
DataTable dt2 = ds.Tables["DataTable1"];
dt.Merge(dt2);
report.SetDataSource(dt);

【讨论】:

@leila.net 更新了答案。试试这个。 你可以看到下面的解决方案:) @leila.net 我的解决方案有帮助吗? 感谢@JunaidKirkire,但我尝试了另一种解决方案:)【参考方案2】:

解决方案是为数据集中使用的每个数据表实现一个数据表方法:第一个数据表的示例:

protected DataTable DataTable1()
    
        string sql = "MyRequest";
        SqlDataAdapter dad = new SqlDataAdapter(sql, con);
        DataSet1 ds = new DataSet1();
        dad.Fill(ds.Tables["NameOfDataTable"]);
        DataTable dt = ds.Tables["NameOfDataTable"];
        return dt;

    

并在打印按钮中添加以下代码:

try 
            DataSet ds = new DataSet();
            DataTable dt1 = DataTable1().Copy(); //the name of the method
            ds.Tables.Add(dt1);
            CrystalReport1 myreport = new CrystalReport1();
            myreport.SetDataSource(ds);
            crystalReportViewer1.ReportSource = myreport;


catch (Exception ex)

   //code ...

成功了:)

【讨论】:

以上是关于如何使用数据集中的 2 个 sql 请求和 2 个数据表在水晶报表中显示数据?的主要内容,如果未能解决你的问题,请参考以下文章

s-s-rS 报表生成器 2.0 如何链接 2 个服务器并在一个数据集中运行

如何在结果集中使用 2 个分组列进行 PIVOT?

如何将数据集中的每 5 个样本分配为测试数据集,将其余样本分配为训练数据集?

顺序数据集中的范围分配

如何学习Oracle

如何组合 2 个 SQL 查询并检索累积计数?