相信安装vs2010的童鞋们都知道vs2010没有自带水晶报表,但是它自带了一个Report,下面我来简单说一下它的用法:
要显示报表需要有三个步骤:
1、添加DataSet
这个很简单,在窗体层右击添加项目——>Data——>DataSet
添加完成后,会出现下图:
单击Server Explorer,选中你所要显示的表(这里以stu表为例),直接拖至界面即可
拖至完成后可以删除你所不需要的字段。
注意:系统会自动帮你实例化一个名为stuTableAdapter的数据表,并自动有一个Fill,GetData方法,
2、添加Report并设计报表
在窗体层右击添加项目——>Reporting——>Report
然后即可进入Report界面开始设计:
可在ReportData工具箱添加你想设计的字段:时间,页码,表名,总页码,用户ID,语言;还可以添加参数和图片
在界面上右击可以添加各个控件,在这里我以表格为例:
添加完表格后会提示你绑定DataSet,在这里我们选择刚才设计好的DateSet1
然后该数据集就会出现在Report Data窗体中,将各个字段拖至表格的列中即可
3、在窗体上添加ReportView控件并显示报表内容
在窗体上添加ReportView控件,绑定刚才设计的Report为本地报表,
下面我来介绍两种显示报表的方法:
方法一:使用DataSet自动实例化的那个数据表(显示全部)
我们将ReportView绑定到DataSet1,窗体下面会出现stuTableAdapter等几个数据:
我们先来看一下它自动编写的方法:
SELECT sno, sname, sage FROM stu
界面层的代码:
Imports Microsoft.Reporting.WinForms Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShow.Click Me.stuTableAdapter.Fill(Me.DataSet1.stu) Me.ReportView1.RefreshReport() End Sub
改进方法一:显示日期范围之内的,需要更改Fill方法
在Fill方法的属性窗体中添加参数@sno,然后更改CommandText语句:
将语句改为:
SELECT sno, sname, sage FROM stu WHERE ([email protected])
界面层的代码:
Imports Microsoft.Reporting.WinForms Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShow.Click Dim sno As String Me.stuTableAdapter.Fill(Me.DataSet1.stu, sno) Me.ReportView1.RefreshReport() End Sub
方法二:自己编写的数据表
前提准备要在ReportView控件旁边的选项中选择Rebind Data Source,将窗体下面的那几个数据删除
我们也可以自己编写数据表,下面看代码:
界面层的代码:(调用的Bll层的SelectBySno方法返回一个数据表,方法可自己编写)
Imports Microsoft.Reporting.WinForms Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim bllStu As New BLL.BllCheckStu Dim dt As New DataTable Dim sno As String sno="1" dt = bllDayBill.SelectBySno(sno) Me.ReportView1.LocalReport.DataSources.Clear() ‘先清除表 Me.ReportView1.LocalReport.DataSources.Add(New ReportDataSource("DataSet1", dt)) Me.ReportView1.RefreshReport() End Sub