是否可以使用在报表查看器中动态生成的数据集?

时间:2013-03-06 09:59:12

标签: c# visual-studio-2010 desktop-application

我是Windows桌面应用程序开发的新手。

我想在我的应用程序中打印帐单,我使用了报表查看器控件并放置了两个标签来显示帐单号和帐号名称。

我在C#中的代码隐藏文件中创建数据集。

我将dataset cell的值赋给标签的text属性。我的代码是:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;


namespace WindowsFormsApplication1
{

public partial class Form1 : Form
{
    OleDbConnection cn;
    OleDbCommand cmd;
    OleDbDataAdapter da;
    DataSet ds;

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        cn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\Bill\\dbBill.accdb");
        string query = "select A.BillNo,A.BillType,A.TaxType,A.PartyName,B.Desc,B.Desc,B.HSNCode,B.Qty,B.Rate,(B.Qty*B.Rate) as Amount " +
                       "from BillMaster A inner join BillDetail B on B.BillNo=A.BillNo";
        cn.Open();
        cmd = new OleDbCommand(query, cn);
        da = new OleDbDataAdapter(cmd);
        ds = new DataSet();
        da.Fill(ds);
        cn.Close();
        // TODO: This line of code loads data into the 'dbBillDataSet.BillDetail' table. You can move, or remove it, as needed.
        this.BillDetailTableAdapter.Fill(this.dbBillDataSet.BillDetail);

        this.reportViewer1.RefreshReport();


    }

    private void reportViewer1_Load(object sender, EventArgs e)
    {



        lblBillNo.Text = ds.Tables[0].Rows[0]["BillNo"].ToString();
        lblParty.Text = ds.Tables[0].Rows[0]["PartyName"].ToString();
    }
}
}

如何将数据集值分配给放置在报表查看器控件中的控件。 请帮我。提前谢谢。

2 个答案:

答案 0 :(得分:1)

  

您无法访问DataSet内的ds实例reportviewr_load。我建议你制作一个function(),它会返回DataSet并在function()内使用reportviewr_load

答案 1 :(得分:0)

private DataSet YourData()
{
cn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\Bill  \\dbBill.accdb");
string query = "select     
  A.BillNo,A.BillType,A.TaxType,A.PartyName,B.Desc,B.Desc,B.HSNCode,B.Qty,B.Rate,
  (B.Qty*B.Rate) as Amount " +

 "from BillMaster A inner join BillDetail B on B.BillNo=A.BillNo";
 cn.Open();
 cmd = new OleDbCommand(query, cn);
 da = new OleDbDataAdapter(cmd);
 ds = new DataSet();
 da.Fill(ds);
 cn.Close();
 return ds;
}