是否可以使用报表查看器中动态生成的数据集
本文关键字:动态 数据集 可以使 报表 是否 | 更新日期: 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;
}