RDLC收集和呈现数据

时间:2015-08-27 17:03:25

标签: c# winforms rdlc

最近几年休息后重新开始编程,我正在建立一个POS(销售点)软件应用程序供我自己消费。我虽然应用程序非常接近版本1 Beta版本.....直到我遇到报告方面的事情。

通过大量的教程和演练,我几乎不知道如何实现我需要报告的目的。

我想要实现的是EOD(日终)报告,我遇到的问题是如何呈现来自4个不同查询的数据。

我尝试过Business对象方法,这适用于在设计时设置的第一个级别,但其余部分不返回任何内容。

有没有更好的方法(更容易理解)来实现这一目标? 有人可以推荐使用来自不同对象或表的数据来建模报告的教程/演练吗? 提取fronm代码 带有停靠的reportviewer的Reportviewer表单

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

不确定你还需要看什么? 提前谢谢了 史蒂夫

1 个答案:

答案 0 :(得分:0)

通过以下链接,我可以开始使用解决方案

http://www.c-sharpcorner.com/UploadFile/robo60/StandaloneRDLCReports11142007183516PM/StandaloneRDLCReports.aspx

由于 史蒂夫