RDLC 收集和呈现数据
RDLC gathering and presenting data
最近在中断几年后重新开始编程,并且正在构建一个 POS(销售点)软件应用程序供我自己使用。我虽然该应用程序非常接近第 1 版 Beta 版本.....直到我 运行 进入报告方面。
通过大量的教程和演练,我几乎none更清楚如何实现我需要报告做的事情。
我想要实现的是 EOD(日终)报告,而我 运行 遇到的问题是如何呈现来自 4 个不同查询的数据。
我已经尝试过业务对象方法,这适用于在设计时设置的第一个级别,但其余部分 return 没有。
有没有更好的方法(更容易理解)来实现这个目标?
有人可以推荐 tutorial/Walkthrough 使用来自不同对象或表格的数据对报告建模吗?
从代码中提取
带有停靠报告查看器的报告查看器表单
public partial class ReportViewer : Form
{
private List<VO.TotSalesByDept> deptSales = new List<VO.TotSalesByDept>();
private VO.TotalSales daySales = new VO.TotalSales();
private List<VO.TotSalesByTender> tendSales = new List<VO.TotSalesByTender>();
private List<VO.TotSalesByGroup> grpSales = new List<VO.TotSalesByGroup>();
private BUS.UserBUS _userBUS = new BUS.UserBUS();
public ReportViewer()
{
InitializeComponent();
//daySales = _userBUS.getSalesTot(DateTime.Now);
deptSales = _userBUS.getDeptSales(DateTime.Now);
//tendSales = _userBUS.getTendSales(DateTime.Now);
//grpSales = _userBUS.getGroupSales(DateTime.Now);
}
private void ReportViewer_Load(object sender, EventArgs e)
{
//reportViewer1.LocalReport.SubreportProcessing += new Microsoft.Reporting.WinForms.SubreportProcessingEventHandler(LocalReport_SubreportProcessing);
//this.TotalSalesBindingSource.DataSource = daySales ;
//this.TotSalesByGrp.DataSource = grpSales;
//this.TotSalesByTender.DataSource = tendSales;
this.TotSalesByDeptBindingSource.DataSource = deptSales;
this.reportViewer1.RefreshReport();
}
//private void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
//{
// e.DataSources.Clear();
// e.DataSources.Add(new ReportDataSource());
//}
}
表单调用的业务层
public List<VO.TotSalesByDept> getDeptSales(DateTime _now)
{
List<VO.TotSalesByDept> deptSales = new List<VO.TotSalesByDept>();
DataTable dataTable = new DataTable();
dataTable = _userDAO.getTSalesByDept(_now.Date);
foreach (DataRow dr in dataTable.Rows)
{
VO.TotSalesByDept deptSale = new VO.TotSalesByDept();
deptSale.Dept = dr["Department"].ToString();
deptSale.RepQty = Int32.Parse(dr["Total QTY"].ToString());
deptSale.RGSales = decimal.Round(decimal.Parse(dr["TotItemSales"].ToString()),2,MidpointRounding.AwayFromZero);
deptSales.Add(deptSale);
}
return deptSales;
}
不确定您还需要看什么?
提前谢谢了
史蒂夫
以下 link 使我能够开始研究解决方案
谢谢
史蒂夫
最近在中断几年后重新开始编程,并且正在构建一个 POS(销售点)软件应用程序供我自己使用。我虽然该应用程序非常接近第 1 版 Beta 版本.....直到我 运行 进入报告方面。
通过大量的教程和演练,我几乎none更清楚如何实现我需要报告做的事情。
我想要实现的是 EOD(日终)报告,而我 运行 遇到的问题是如何呈现来自 4 个不同查询的数据。
我已经尝试过业务对象方法,这适用于在设计时设置的第一个级别,但其余部分 return 没有。
有没有更好的方法(更容易理解)来实现这个目标? 有人可以推荐 tutorial/Walkthrough 使用来自不同对象或表格的数据对报告建模吗? 从代码中提取 带有停靠报告查看器的报告查看器表单
public partial class ReportViewer : Form
{
private List<VO.TotSalesByDept> deptSales = new List<VO.TotSalesByDept>();
private VO.TotalSales daySales = new VO.TotalSales();
private List<VO.TotSalesByTender> tendSales = new List<VO.TotSalesByTender>();
private List<VO.TotSalesByGroup> grpSales = new List<VO.TotSalesByGroup>();
private BUS.UserBUS _userBUS = new BUS.UserBUS();
public ReportViewer()
{
InitializeComponent();
//daySales = _userBUS.getSalesTot(DateTime.Now);
deptSales = _userBUS.getDeptSales(DateTime.Now);
//tendSales = _userBUS.getTendSales(DateTime.Now);
//grpSales = _userBUS.getGroupSales(DateTime.Now);
}
private void ReportViewer_Load(object sender, EventArgs e)
{
//reportViewer1.LocalReport.SubreportProcessing += new Microsoft.Reporting.WinForms.SubreportProcessingEventHandler(LocalReport_SubreportProcessing);
//this.TotalSalesBindingSource.DataSource = daySales ;
//this.TotSalesByGrp.DataSource = grpSales;
//this.TotSalesByTender.DataSource = tendSales;
this.TotSalesByDeptBindingSource.DataSource = deptSales;
this.reportViewer1.RefreshReport();
}
//private void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
//{
// e.DataSources.Clear();
// e.DataSources.Add(new ReportDataSource());
//}
}
表单调用的业务层
public List<VO.TotSalesByDept> getDeptSales(DateTime _now)
{
List<VO.TotSalesByDept> deptSales = new List<VO.TotSalesByDept>();
DataTable dataTable = new DataTable();
dataTable = _userDAO.getTSalesByDept(_now.Date);
foreach (DataRow dr in dataTable.Rows)
{
VO.TotSalesByDept deptSale = new VO.TotSalesByDept();
deptSale.Dept = dr["Department"].ToString();
deptSale.RepQty = Int32.Parse(dr["Total QTY"].ToString());
deptSale.RGSales = decimal.Round(decimal.Parse(dr["TotItemSales"].ToString()),2,MidpointRounding.AwayFromZero);
deptSales.Add(deptSale);
}
return deptSales;
}
不确定您还需要看什么? 提前谢谢了 史蒂夫
以下 link 使我能够开始研究解决方案
谢谢 史蒂夫