vs自带报表的使用

时间:2024-04-01 17:16:05

相信安装vs2010的童鞋们都知道vs2010没有自带水晶报表,但是它自带了一个Report,下面我来简单说一下它的用法:

要显示报表需要有三个步骤:

1、添加DataSet

这个很简单,在窗体层右击添加项目——>Data——>DataSet

添加完成后,会出现下图:

vs2010自带报表的使用

单击Server Explorer,选中你所要显示的表(这里以stu表为例),直接拖至界面即可

vs2010自带报表的使用

拖至完成后可以删除你所不需要的字段。

注意:系统会自动帮你实例化一个名为stuTableAdapter的数据表,并自动有一个Fill,GetData方法,

vs2010自带报表的使用

2、添加Report并设计报表

在窗体层右击添加项目——>Reporting——>Report

然后即可进入Report界面开始设计:

可在ReportData工具箱添加你想设计的字段:时间,页码,表名,总页码,用户ID,语言;还可以添加参数和图片

vs2010自带报表的使用

在界面上右击可以添加各个控件,在这里我以表格为例:

vs2010自带报表的使用

添加完表格后会提示你绑定DataSet,在这里我们选择刚才设计好的DateSet1

然后该数据集就会出现在Report Data窗体中,将各个字段拖至表格的列中即可

vs2010自带报表的使用

3、在窗体上添加ReportView控件并显示报表内容

在窗体上添加ReportView控件,绑定刚才设计的Report为本地报表,

下面我来介绍两种显示报表的方法:

方法一:使用DataSet自动实例化的那个数据表(显示全部)

我们将ReportView绑定到DataSet1,窗体下面会出现stuTableAdapter等几个数据:

vs2010自带报表的使用

我们先来看一下它自动编写的方法:

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,将窗体下面的那几个数据删除

vs2010自带报表的使用

我们也可以自己编写数据表,下面看代码:

界面层的代码:(调用的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