首页 > 代码库 > 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自带报表的分组显示