首页 > 代码库 > VS自带报表的分组显示

VS自带报表的分组显示

     本例用来显示Northwind中的order details表中的数据交分组

效果:如下

技术分享


1.建立一WinForm程序,并建立一数据库连接,选择order details表,此时会自动建立一个xsd的数据集类,如下图

技术分享

2.在项目中右键,新添加一个Report1.rdlc报表文件,并向此空白报表中添加一表格,如下图

技术分享

数据集属性窗口中的“名称”是此报表的名称,在后面会用到,一定要记住。

技术分享

以下为添加了表格的报表

技术分享

3.从“报表数据”中把数据字段拖动到此表格中,行或列可以用右键“插入”功能即可。字段放好后,进行以orderid分组,

“行组”表示和字段显示在同一行中,“列组“是专门起了一列。

   技术分享

技术分享

4.给组头及组尾中的相关属性框进行表达式设计(双击字段或函数就会自动写到表达式下)

技术分享   技术分享

给Quantity进行汇总,在其下面的对应的文本框中右键,设置其表达式

技术分享

技术分享

5.以下为设计好的报表

  技术分享

6.在Form1的窗体上放一reportViewer1,在Form1的load事件中写入如下代码:

技术分享
 private void Form1_Load(object sender, EventArgs e)
        {
            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["myconstr"].ConnectionString))
            {
                SqlDataAdapter sda = new SqlDataAdapter("select * from [order details]", conn);
                conn.Open();
                DataSet ds = new DataSet();
                
                sda.Fill(ds, "Order Details");//表名为xsd中表的名称
                ReportDataSource RD = new ReportDataSource("DataSet1", ds.Tables[0]);//DataSet1为建立报表时用到的数据集名称

                this.reportViewer1.ProcessingMode=Microsoft.Reporting.WinForms.ProcessingMode.Local;
                this.reportViewer1.LocalReport.ReportPath=@"C:\Users\Administrator\Desktop\WindowsFormsApplication2\WindowsFormsApplication2\Report1.rdlc";
                this.reportViewer1.LocalReport.DataSources.Clear();
                this.reportViewer1.LocalReport.DataSources.Add(RD);
                this.reportViewer1.RefreshReport();
            }           
        

  new ReportDataSource表示把现有的数据集和报表原来的数据集进行绑定

7.运行OK。


以上为转载:http://www.cnblogs.com/yagzh2000/archive/2013/07/30/3224826.html


下面补充一些个人的东西,

    做机房用VS自带的报表,已经两次了,第一次的时候发现了一个问题,就是无论代码怎么编写,但是报表中显示的数据根本不是自己要查的数据,而是数据库中原装的数据。自己调试,别人调试,准没有结果。

    在做第二次机房的时候突然找到了元音,原来是自己的数据源的类型有问题,自己用的数据源是泛型,

        Dim rptDataSouce As New ReportDataSource  '实例化一个数据源对象
        rptDataSouce.Name = "DataSet1" '设置报表数据集名称
        rptDataSouce.Value = http://www.mamicode.com/mylist  '设置报表数据源实例>

    所以就出现了上述的结果。至于为什么DataTable可以当做数据源实例,但是泛型却不可以?

    个人认为,在设置数据源的时候,即第二的时候加载的是数据库中的表,而在设置数据源实例的时候却用的是泛型,所以不正确。


 

 

VS自带报表的分组显示