kingjq2002

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

开发环境:vs2010

报表工具:ReportViewer.exe 这个要另外安装

开发说明:

      由于在开发、运行过程中,会生成一些汇总统计表,这样的表不一定会以数据库表的形式固定存在,因此,会以运行过程中,用DataSet\DataTable、参数的方式传递给ReportViewer。

关键点:

      1、ReportViewer在制作报表时,要生成用户数据,需要添加数据表,在制作过程中,调用该表。但,如果该表是通过参数传递过来,会无法读取该表,因此,需要手工添加一个临时表给它。

     

      2、临时表生成,解决,添加新建项方案中,添加新建项,数据-数据集,工具栏,添加table,再添加键,生成一个可供调用的临时表。

      3、VS2010在制作表过程中,菜单会出现在两个地方,一个在主菜单出现,下拉后内容极少,不包括数据参数,一个在【视图】中,打开,在工具栏会出现数据参数等更多内容。

   4、有了临时表、参数,就可以布局制作报表了,统计时间是数据参数传递的。

     

    5、统计表的数据传输与参数参数程序

        注:传递数据表

            Microsoft.Reporting.WinForms.ReportDataSource r = new Microsoft.Reporting.WinForms.ReportDataSource();
            r.Name = "my_dt";
            r.Value = da;

            传递的表名称要与设计时的名称一致。

            this.reportViewer1.LocalReport.DataSources.Clear();
            this.reportViewer1.LocalReport.DataSources.Add(r);

             传递参数

        ReportParameter p = new ReportParameter("dt", dt);
       this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { p });

             _ds是通过中间层传输过来。

  

View Code
private void bt_Sum_Class_Click(object sender, EventArgs e)
{
string dt = this.dateTimePicker1.Value.ToString("yyyy年MM月dd日") + " -至-" + this.dateTimePicker2.Value.ToString("yyyy年MM月dd日");
this.lb_title.Text = "[" + this.dateTimePicker1.Value.ToString("yyyy-MM-dd") + "]至[" +
this.dateTimePicker2.Value.ToString("yyyy-MM-dd") + "]" +
this.bt_Sum_Class.Text;

DataSet _ds = gl.DecompressGetBytes(gl.BL.Get_Sum_Between_Classified_Zip(this.dateTimePicker1.Value, this.dateTimePicker2.Value));
DataTable da = _ds.Tables[0];
this.dataGridView1.DataSource = _ds.Tables[0];
this.dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);

for (int i = 1; i <= this.dataGridView1.Columns.Count - 1; i++)
{
this.dataGridView1.Columns[i].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
}

Microsoft.Reporting.WinForms.ReportDataSource r = new Microsoft.Reporting.WinForms.ReportDataSource();
r.Name = "my_dt";
r.Value = da;

this.reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.DataSources.Add(r);
this.reportViewer1.Visible = true;
this.reportViewer1.LocalReport.ReportPath = "Rp_Sum_Class.rdlc";

ReportParameter p = new ReportParameter("dt", dt);
this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { p });

gl.show_Icon("请选择[页面设置]-[方向]-[横向],再打印。", 2, 2);
this.reportViewer1.RefreshReport();
_ds.Dispose();
}


       第一次写,欢迎砸砖。

   

     

posted on 2011-10-13 10:53  kingjq2002  阅读(3192)  评论(6编辑  收藏  举报