VS自带报表的分组显示

来源:互联网 发布:灰帽seo 编辑:程序博客网 时间:2024/05/02 06:44

     本例用来显示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 = mylist  '设置报表数据源实例

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

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


 

 

0 0
原创粉丝点击