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

本文关键字:动态 数据集 可以使 报表 是否 | 更新日期: 2023-09-27 18:02:44

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

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

我正在创建数据集在代码后面的文件在c#。

我将数据集单元格的值分配给标签的文本属性。我的代码是:

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();
    }
}
}

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

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

你不能访问reportviewr_load内部的DataSet实例ds。我建议您创建一个function(),它将返回一个DataSet,并在reportviewr_load中使用该function()

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;
}