繁体   English   中英

当数据集中有多个表时,在Crystal报表中显示数据

[英]Display data in crystal report when more than one table in DataSet

我在VS 10中使用Crystal Report,

我添加了数据集。

现在,如果DataSet中只有一个表,那么将显示数据,而如果我添加带有链接的两个表,则将不会显示数据。

我正在从DataSet(XSD)的此表中获取字段。

如何克服这个问题。

提前致谢。 希伦

您需要绑定要使用的DataTable,而不是绑定整个DataSet。 这样的答案显示了一个很好的例子: https : //stackoverflow.com/a/8341474/283895

(从该文章复制的代码)

ReportDocument rpt = new ReportDocument();
rpt.load();
rpt.Database.Tables[0].SetDataSource(ds.Tables[0]); 
this.crystalReportViewer1.ReportSource = rpt;

我经常做的是;

  1. 将2个数据集添加到水晶报表。
  2. 下面的代码将2个数据集添加到同一报表中。

C#

  public partial class Default2 : System.Web.UI.Page
{
    SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["MyCtr1"].ConnectionString);
    SqlConnection cn1 = new SqlConnection(ConfigurationManager.ConnectionStrings["MyCtr2"].ConnectionString);
    ReportDocument rdoc = new ReportDocument();
    DataTable ds = new DataTable();
    DataTable ds1 = new DataTable();
    protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {

            loadreport();
            }

  private void loadreport()
{
{              
        cn.Open();
        SqlDataAdapter da = new SqlDataAdapter("select *  from [MyTable1] where (Number LIKE '" + DropDownList1.Text + "') ", cn);
       da.Fill(ds);
       cn.Close();
{
{
       cn1.Open();
       SqlDataAdapter da1 = new SqlDataAdapter("select *  from [MyTable2] where (No LIKE '" + DropDownList1.Text + "') ", cn1);
            //DataTable ds1 = new DataTable();
        da1.Fill(ds1);
     cn1.Close();
}
    rdoc.Database.Tables[0].SetDataSource(ds);
    rdoc.Database.Tables[1].SetDataSource(ds1);

    InvoiceReport.ReportSource = rdoc;
    InvoiceReport.DataBind();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM