在VS.NET2005中使用免费报表

我们知道,在VS.NET2003下提供了Crystal Report报表,它功能强大,但是它是要收费的。现在,在VS.NET2005中我们有了另外一个选择,而且它是完全免费使用的,那就是RDLC报表。下面,就让我们一起来享受这份免费的大餐吧。

 

 

[一、认识RDLC报表]

RDLC的英文全称是Report Definition Language Client-side processing,Client-side processing强调了它的客户端处理能力。RDLC报表基于报表定义 ,它是一个说明数据和布局的XML文件,使用报表定义语言编写。VS.NET2005提供了设计和使用这种报表的能力,Microsoft将这种报表的后缀定为RDLC。

相对于Crystal Report,它的功能并不逊色:

l         在WinForm和WebForm中都可以使用;

l         丰富的控件可以满足各种报表样式的需要;

l         强大的数据处理能力,在报表中就可以对数据进行分组、排序、筛选;

l         使用方便。不需要安装额外的软件,通过控件就可以轻松的实现导出Excel、PDF;

l         用XML描述报表,使通用成为可能;

 

 

[二、活用RDLC报表]

下面,我们通过一个实例来介绍如何在WinForm中使用RDLC报表中“表”控件来实现多层报表样式。希望能帮大家达到活用的目的。

1。定义数据源

首先创建一个Visual C#的“Windows应用程序” 项目(ReportTest),然后选择菜单“数据”—“添加新数据源”。在打开的“数据源配置向导”中选择“数据库”,单击下一步。在“选择你的数据连接”页中,笔者选择的是SQL server 2000下的Northwind数据库,单击下一步。然后在“选择数据库对象”页中,选择表“Orders”,最后单击“完成”按钮,添加的数据源如图1所示。

 


2
。添加报表

选择菜单 “添加新项”,打开“添加新项”对话框。选择“报表”图标,输入名称,单击“添加”按钮,将打开报表设计器。在工具箱中双击“表”控件,将“数据源”窗口中的OrderID字段拖至表的“详细信息”行的第一列,可以看到详细信息单元格显示的是字段表达式“=Fields!OrderID.Value”,并且表头行自动放置了标题,默认是字段名。依次在其他单元格放上相应字段,结果如图2所示。

 


3
。设置字段格式

右键单击包含 OrderDate 字段表达式的单元,在弹出菜单中选择“属性”。 在“格式”选项卡单击“格式代码”后的第2个按钮,打开“选择格式”对话框。为OrderDate 字段选择合适的格式(如图3),单击“确定”即可。

 


4
。添加分组

组可以用来显示递归层次结构,比如显示每个客户(Customer)对应的订单(Order)。

单击选中表,在“详细信息”行最左边单击右键,在弹出菜单中选择“插入组”。 在“常规”选项卡上的“分组方式”框中,在第一行选择“=Fields!CustomerID.Value”,如图4所示,这将按照CustomerID对数据进行分组。最后单击“确定”, 表中将添加组头和组尾两个新行。

 



5
。设置详细信息排序方式

单击选中表,在表的左上角单击右键,在弹出菜单中选择“属性”,打开“表属性”对话框。在“排序”选项卡上的“排序方式”框中,在第一行选择 “=Fields!OrderDate.Value”,在第二行选择 “=Fields!OrderID.Value”,排序方式设为先按“日期”降序排列,然后再按“订单号”升序排列,如图5所示。

在上面分组属性对话框中同样可以设置组的排序方式。


6
。添加公式

为了计算每个Customer的订单数。右键单击组尾的第一个单元格,在弹出菜单中选择“表达式”,在“编辑表达式”对话框的上部书写表达式“=Count(Fields!OrderID.Value)”。如果不太清楚公式的含义,可以在下方的类别树中选择,“说明”窗口会有相应的提示,如图6所示。

 


7
。显示报表

VS.NET2005提供了一个专门的ReportViewer控件用来显示RDLC报表。在Form1上添加一个button控件和一个ReportViewer控件。在button控件的Click事件中编写如下代码:

private void button1_Click(object sender, EventArgs e)

{

//设置数据源

reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("NorthwindDataSet_Orders", LoadData()));

//设置报表

reportViewer1.LocalReport.ReportEmbeddedResource = "ReportTest.Report1.rdlc";

this.reportViewer1.RefreshReport();

}

这里没有使用最开始绑定的数据源,而是用LoadData函数设置数据,这样的好处是如果修改了数据源,比如从Access转到SQL server,报表不需要做任何修改,但必须保证数据源架构相同。代码如下:

private DataTable LoadData()

{

SqlConnection con = new SqlConnection("Data Source=servername;Initial Catalog=Northwind;Integrated Security=True");

SqlCommand cmd = new SqlCommand("select * from orders where orderdate>='1998/01/01' order by customerid", con);

SqlDataAdapter adp = new SqlDataAdapter(cmd);

DataSet ds = new DataSet();

adp.Fill(ds);

return ds.Tables[0];

}

因为报表的“生成操作”属性默认是“嵌入的资源”,所以需要设置ReportEmbeddedResource属性,如果是使用外部文件,代码如下:

reportViewer1.LocalReport.ReportPath = "Report1.rdlc";

 

最后的效果如图7所示,怎么样,效果不错吧?

 


(刊登于 电脑报2006/09/11 第36期)

转载于:https://www.cnblogs.com/chenbg2001/archive/2011/03/18/1987752.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值