【问题标题】:Crystal Reports linking multiple datatables from same datasetCrystal Reports 链接来自同一数据集的多个数据表
【发布时间】:2020-05-22 18:45:20
【问题描述】:

我的 ASP C# 应用程序有一个带有主报表的 Crystal 报表和一个位于主报表本身内的子报表。我的主报告列出了学生,而子报告预计会列出列出的学生的分数列表。 单击按钮时,我正在填充主报告的数据表,效果很好。但是,不知道如何链接主报告和子报告。我已经定义了一个链接两个数据集的参数,但是我不知道如何在单击按钮时填充第二个数据表。 希望有一些样本,我在搜索几个小时后找不到(主要是因为我不知道要搜索的正确术语)

【问题讨论】:

    标签: datatable crystal-reports


    【解决方案1】:

    通过结合这些线程,我设计了一个解决方案

    1. https://www.c-sharpcorner.com/article/generate-Asp-Net-crystal-report-using-dataset/
    2. How to set datasource of Sub crystal report in c# win form app

    我只需要在数据集中填充数据表并将子报表链接到公共列上。下面提供了示例代码。

    using CrystalDecisions.CrystalReports.Engine;
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace insert_demo
    {
        public partial class MarkList : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                //DataTable dt = new DataTable();
    
                SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|insert_demo.mdf;Integrated Security=True");
    
                SqlDataAdapter da = new SqlDataAdapter(@"SELECT * from tbl_data", con);        
                Students ds = new Students();
                da.Fill(ds, "StudentTable");
    
    
                SqlDataAdapter da1 = new SqlDataAdapter(@"SELECT * from STUDENT_SCORES", con);
                Students ds1 = new Students();
                da1.Fill(ds1, "MarksTable");
    
    
    
                ReportDocument oRpt = new ReportDocument();
                oRpt.Load(Server.MapPath(@"~/CrystalReport4.rpt"));
                oRpt.SetDataSource(ds);
    
                oRpt.Subreports[0].DataSourceConnections.Clear();
                oRpt.Subreports[0].SetDataSource(ds1);
    
    
    
                CrystalReportViewer1.Visible = true;
                CrystalReportViewer1.ReportSource = oRpt;
    
    
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-06
      • 1970-01-01
      • 2010-10-01
      • 2016-06-02
      • 2012-05-26
      • 2013-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多