如何从数据集填充数据到水晶报告?

时间:2011-01-15 01:02:48

标签: asp.net crystal-reports

我创建了一个空白水晶报告

然后使用以下代码,运行后没有什么可看的。

是否需要将字段对象添加到与数据集中的字段对应的crytsl报告中。 但我不知道如何添加这种通过水晶报告无法连接的情况。

try
        {
            string _connectionString = ConfigurationManager.ConnectionStrings["CarParkConnectionString"].ConnectionString;

            OleDbConnection connection = null;
            try
            {
                using (connection = new OleDbConnection(_connectionString))
                {
                    //OleDbCommand command = connection.CreateCommand();
                    string selectsql = "SELECT a.Transaction_Date, a.Card_no, a.Company, a.Credit_Fee, a.Non_Credit_Fee FROM [SELECT Transaction_Date, Card_no, Company, Fee as Credit_Fee, 0 as Non_credit_fee FROM CarPark where IsCredit = true union all SELECT Transaction_Date, Card_no, Company, 0 as Credit_Fee,  Fee as Non_credit_fee FROM CarPark where IsCredit = false]. AS a where a.Transaction_Date >= " + Calendar1.SelectedDate.ToShortDateString() + " and a.Transaction_Date <= " + Calendar2.SelectedDate.ToShortDateString();
                    //command.CommandText = selectsql;
                    //SetCommandParametersForInsertUpdateTo(carpark, command, error);
                    connection.Open();

                    OleDbDataAdapter dataAdapter1 = new OleDbDataAdapter(selectsql, connection);
                    DataSet ds = new DataSet();
                    dataAdapter1.Fill(ds, "CarPark");

                    dataAdapter1.Dispose();

                    CrystalReport1 objRpt = new CrystalReport1();
                    objRpt.SetDataSource(ds.Tables[0]);

                    DailyReport_CrystalReportViewer.EnableParameterPrompt = false;
                    DailyReport_CrystalReportViewer.ReportSource = objRpt;
                    DailyReport_CrystalReportViewer.RefreshReport();
                }
            }
            catch (Exception ex)
            {
                connection.Close();
                Error_Label.Text = Error_Label.Text + " " + ex.Message;
            }
            finally
            {
                connection.Close();
            }

2 个答案:

答案 0 :(得分:3)

以下是使用数据集创建晶体报告所需的步骤:

首先,这种方法称为PUSH方法。

1-通过visual studio创建数据集     转到右键单击您的项目 - &gt;添加新项目 - &gt; Datset称之为数据集1

2-在数据集中创建一个表(表1)

3-将列添加到表中,指定每列的类型  假设你有2列(ID类型为int),(字符串的名称类型)

4-然后在您的报告中您想为其选择数据源,因此在左侧的Field Explorer中,您将找到数据库字段,右键单击它并选择数据库专家

5-当你这样做时打开项目数据然后ADO.NET数据集选择你的数据集(数据集1)然后你的表(表1)

6-您会发现字段资源管理器中的数据库字段现在填充了表格和2列id和名称。

7-将这两个字段排除在报告的详细信息部分内。

现在可以查看报告但尚未查看,因为您需要通过数据集填充ID和名称的字段

8-填充数据集的示例代码

Dataset ds=new DataSet();
DataTable dt=new DataTable("Table1"); // Be sure to call this table as your Table's name
                                      // in the Dataset
dt.Columns.Add("ID", typeof(System.Integer)); //Same name of your ID column
dt.Columns.Add("Name", typeof(System.String));
Datarow dr=dt.NewRow();
dr["ID"]=1;
dr["Name"]="Test";
dt.Rows.Add(dr);
ds.Tables.Add(dt);
ReportDocument rpt = new ReportDocument();
rpt.Load(Server.MapPath("Your Report's Name"));
rpt.SetDataSource(ds);

DailyReport_CrystalReportViewer.ReportSource = rpt;
DailyReport_CrystalReportViewer.DataBind();

这是您需要的所有步骤,

希望有所帮助。

答案 1 :(得分:0)