这是一个使用RDLC报表定义文件、ReportViewer控件生成本地报表的简单示例。
一、新建一个.net2.0项目:
该项目命名为ReportApp,为项目新建两个文件夹 Reports、Datasets。Reports文件夹存储报表定义文件,Datasets存储数据集。
二、创建Dataset
1、第一个Dataset:确保解决方案资源管理器中选中Datasets后,点击 菜单中的“项目”;“添加新项”;选择左侧 “数据”,再选择“数据集”;命名为FirstDataSet.xsd,如下图.
在“服务器资源管理器”中新建一个到Northwind.mdb数据库的连接,并将Northwind.mdb数据库添加到项目中。
将Northwind.mdb中的Products表拖至FirstDataset.xsd中。
2、同样的方法创建第二个Dataset:SecondDataset.xsd。将将Northwind.mdb中的Orders表拖至其中。
三、创建Reports
1、第一个报表ReportProducts:确保解决方案资源管理器中选中Reports后,点击 菜单中的“项目”;“添加新项”;选择左侧 “Reporting”,再选择“报表”;命名为ReportProducts.rdlc,如下图。
修改ReportProducts.rdlc文件属性中的“复制到输出目录”,改为:始终复制。如果不修改此属性,下面生成报表时将找不到报表定义文件。
选择左侧的“报表数据”工具箱,新建一个数据集。
命名数据集名称为:RpProductsDataset,此名称在后面的Code有用。选择数据源为FirstDataset,选择可用数据集为Products。
在工具箱里拖拽一个表至报表,将Tablix1的datasetname设为RpProductsDataSet,然后设置表格各个单元的字段。
2、使用同样的方法建立第二个报表:ReportOrders.rdlc,报表的数据集名称为RpOrdersDataset。
四、生成报表
双击打开form1.vb,从工具箱中将ReportViewer控件拖至Form1中。默认情况下,在VS2010的.net2.0项目中找不到ReportViewer控件。可以右击工具箱中的“数据”,选择"选择项...",从中选择ReportViewer控件。注意:有winform版和web版共两种ReportViewer控件。
将ReportViewer控件的Anchor属性设置为Top, Bottom, Left, Right。form1的WindowState属性设置为Maximized。
从工具箱中拖拽两个Button,分别命名为ReportProducts、ReportOrders。
form1的代码如下:
Public Class Form1

    'Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

    '    Me.ReportViewer1.RefreshReport()
    'End Sub

    'ReportProducts报表
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        '定义数据集
        Dim ProductsDS As New FirstDataSet
        '数据SQL命令
        Dim commandtext As String = "select * from Products"
        '报表定义文件
        Dim rdlcfile As String = "Reports/ReportProducts.rdlc"
        '报表中使用的数据集名称
        Dim reportds As String = "RpProductsDataSet"
        '生成报表
        Me.GetReport(ProductsDS, commandtext, rdlcfile, reportds, False)

    End Sub

    'ReportOrders报表
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        '定义数据集
        Dim ProductsDS As New SecondDataSet
        '数据SQL命令
        Dim commandtext As String = "select * from orders"
        '报表定义文件
        Dim rdlcfile As String = "Reports/ReportOrders.rdlc"
        '报表中使用的数据集名称,注意:名称中大小写敏感
        Dim reportds As String = "rpOrdersDataset"
        '生成报表
        Me.GetReport(ProductsDS, commandtext, rdlcfile, reportds, True)
    End Sub

    Private Sub GetReport(ByVal ds As DataSet, ByVal Commandtext As String, ByVal RDLCFile As String, ByVal ReportDS As String, ByVal isLandscape As Boolean)
        'ds:使用哪一个数据集
        'Commandtext:数据SQL命令
        'RDLCFile:RDLC文件路径及文件名
        'ReportDS:RDLC报表文件使用的数据集名称
        'isLandscape:报表页面是否以横向显示

        '----------------------------获取数据----------------------------------
        '定义数据集
        'Dim DataSetUsed As New ds
        '定义连接
        Dim conn As New OleDb.OleDbConnection
        '连接的关键字从配置中获取
        conn.ConnectionString = My.Settings.NorthwindConnectionString
        '定义数据命令
        Dim comm As New Data.OleDb.OleDbCommand
        comm.CommandType = CommandType.Text
        comm.CommandText = Commandtext
        comm.Connection = conn
        '定义数据适配器
        Dim DA As New OleDb.OleDbDataAdapter(comm)
        '填充数据
        Using conn
            conn.Open()
            DA.Fill(ds.Tables(0))
        End Using

        '--------------------------------生成报表-----------------------------
        '设置使用本地报表模式
        Me.ReportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local
        '清空ReportViewer1控件原有的数据源
        Me.ReportViewer1.LocalReport.DataSources.Clear()
        '定义本地报表变量
        Dim ReportEngine As Microsoft.Reporting.WinForms.LocalReport
        ReportEngine = ReportViewer1.LocalReport
        '指定报表文件
        ReportEngine.ReportPath = RDLCFile
        '加载数据源,注意:数据集的大小写是敏感的。
        ReportEngine.DataSources.Add(New Microsoft.Reporting.WinForms.ReportDataSource(ReportDS, ds.Tables(0)))

        '---------------------设置预览---------------------------------

        '显示模式是打印预览模式
        Me.ReportViewer1.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout)
        '页面设置变量
        Dim pageset As Drawing.Printing.PageSettings = Me.ReportViewer1.GetPageSettings
        '页面是否是横向显示
        pageset.Landscape = isLandscape
        '设置页面
        Me.ReportViewer1.SetPageSettings(pageset)
        '以百分比显示
        Me.ReportViewer1.ZoomMode = Microsoft.Reporting.WinForms.ZoomMode.Percent
        '100%的比例
        Me.ReportViewer1.ZoomPercent = 100

        '刷新报表
        Me.ReportViewer1.RefreshReport()
    End Sub
End Class
最后的效果如下:
  

作者: 水光 发表于 2011-07-08 16:51 原文链接

推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架
新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"