机房重构之报表制作

机房重构之报表制作


          在VB.NET中的报表,首先需要一个容器,新建一个项目,新建窗体,然后从工具箱中往窗体上添加这个容器。


机房重构之报表制作_第1张图片


          容器添加完成,就可以添加报表了,具体操作如下图:


机房重构之报表制作_第2张图片机房重构之报表制作_第3张图片机房重构之报表制作_第4张图片机房重构之报表制作_第5张图片


          当你在报表中画完表格时,会弹出数据源配置向导,默认数据库,下一步,弹出选择使用哪种类型的数据库模型,默认数据集,下一步,此时弹出选择数据连接。

          新建连接,其中第一项是数据源的类型,根据使用的数据库进行选择,第二项是服务器名,这里由于数据库就在本机PC上,故使用我的计算机名称,下面选择使用SQLServer身份认证,用户名和密码,都是自己的数据库登录的用户名和密码。

          输完用户名和密码之后,就能够连接到对应的数据库,选择使用的具体数据库的名字,测试连接,连接成功后确定即可。


机房重构之报表制作_第6张图片机房重构之报表制作_第7张图片


          这里,有一个选项是否在连接字符串中包含敏感数据,选择是或者否都可以,然后下一步,弹出将连接保存到应用程序配置文件中对话框,默认选择的是,下一步即可。


机房重构之报表制作_第8张图片


          选择数据库对象对话框,里面包含表、视图、存储过程和函数,这里选择所需要的表,单击完成,弹出数据集属性对话框,列出该数据集的具体属性,这里的字段是无法进行添加或者删除的,确定即可。


机房重构之报表制作_第9张图片机房重构之报表制作_第10张图片


          回到报表设计页面,里面包含了两行的内容,第一行是表头,自定义输入表头既可,就是显示出来的列的标题,第二行是数据,单击右上角数据库图标,选择对应的数据集的属性,也就是具体的字段即可。

          这里,在表头的标题中输入文字,显示为小方格,是字体类型的问题,选择一种你想要的字体就可以了。


机房重构之报表制作_第11张图片机房重构之报表制作_第12张图片


          此外,可以选择文本框,在报表中添加大标题,添加图片等等,选择菜单中的视图,最后一行是报表数据,选择其中的参数,右击添加参数,可以添加日期和时间等等。


机房重构之报表制作_第13张图片机房重构之报表制作_第14张图片


          这就是VB.NET中报表的制作,非常的简单,多点一点就都会了。

          在机房收费系统中,报表中数据的显示,这里是把控件中的两个参数传到了D层,然后,D层返回的是泛型,也就是这个报表的数据源,代码如下,仅供参考:   

          UI层

    '查询
    Private Sub btnInquire_Click(sender As Object, e As EventArgs) Handles btnInquire.Click
        '输入的有效性验证
        '起始日期,不能大于终止日期
        If DateDiff("d", CDate(myDateTime1.Value), CDate(myDateTime2.Value)) < 0 Then
            MsgBox("起始日期不能小于终止日期!", vbOKOnly + vbExclamation, "警告")
            Exit Sub
        End If

        '实例化实体类
        Dim CheckBill As New Entity.EntityT_CheckBill
        Dim myCheckBill As New List(Of Entity.EntityT_CheckBill)
        Dim facade As New Facade.FacadeInquireCheckdayBill

        Dim Date1 As DateTime
        Dim Date2 As DateTime
        Date1 = Format((myDateTime1.Value), "yyyy/MM/dd")
        Date2 = Format((myDateTime2.Value), "yyyy/MM/dd")
        myCheckBill = facade.ShowCheckBill(Date1, Date2)

        '声明一个报表数据源对象 
        Dim rptDataSource As New ReportDataSource
        '设置报表数据源名称  
        rptDataSource.Name = "DataSet1"
        '设置报表数据源实例()
        rptDataSource.Value = myCheckBill

        '设置嵌入报表的资源的名称  
        myReportView.LocalReport.ReportEmbeddedResource = "UI.ReportCheckdayBill.rdlc"
        '清空报表数据源  
        myReportView.LocalReport.DataSources.Clear()
        '添加报表数据源  
        myReportView.LocalReport.DataSources.Add(rptDataSource)

        '设置报表中的参数集合,这里传递的参数,名字大小写必须和报表中的一致  
        '且其本身数据类型必须与报表中定义的数据类型也必须一致。  
        Dim params() As ReportParameter =
            {New ReportParameter("StartDate", Date.Parse(Date1)),
             New ReportParameter("EndDate", Date.Parse(Date2))}

        '传递报表中的参数集合()
        myReportView.LocalReport.SetParameters(params)

        '刷新报表  
        Me.myReportView.RefreshReport()
    End Sub
          

          D层

Public Class SqlServerDALInquireCheckdayBill : Implements IDAL.IDALInquireCheckdayBill

    '查询账单数据
    '直接传参数
    Public Function ShowCheckBill(ByVal Date1 As Date, ByVal Date2 As Date) As List(Of Entity.EntityT_CheckBill) Implements IDAL.IDALInquireCheckdayBill.ShowCheckBill
        Dim Sql As String
        Dim table As DataTable
        '实例化SqlHelper
        Dim helper As New SqlHelper
        Dim myCheckBill As List(Of Entity.EntityT_CheckBill)

        '参数必须加@
        '不可以直接传,sql语句不识别这些自定义的参数
        '必须加上@,sql语句才知道这些是参数
        Dim sqlParams As SqlParameter() = {New SqlParameter("@Date1", Date1),
                                           New SqlParameter("@Date2", Date2)}
        Sql = "select*from T_CheckBill where NowDate between @Date1 and @Date2"
        table = helper.GetDataTable(Sql, CommandType.Text, sqlParams)
        myCheckBill = ConvertHelper.ConvertList(Of Entity.EntityT_CheckBill)(table)
        '返回泛型
        Return myCheckBill
    End Function

End Class

你可能感兴趣的:(机房重构之报表制作)