报表制作
在VB.NET中的报表,首先需要一个容器,新建一个项目,新建窗体,然后从工具箱中往窗体上添加这个容器。
容器添加完成,就可以添加报表了,具体操作如下图:
当你在报表中画完表格时,会弹出数据源配置向导,默认数据库,下一步,弹出选择使用哪种类型的数据库模型,默认数据集,下一步,此时弹出选择数据连接。
新建连接,其中第一项是数据源的类型,根据使用的数据库进行选择,第二项是服务器名,这里由于数据库就在本机PC上,故使用我的计算机名称,下面选择使用SQLServer身份认证,用户名和密码,都是自己的数据库登录的用户名和密码。
输完用户名和密码之后,就能够连接到对应的数据库,选择使用的具体数据库的名字,测试连接,连接成功后确定即可。
这里,有一个选项是否在连接字符串中包含敏感数据,选择是或者否都可以,然后下一步,弹出将连接保存到应用程序配置文件中对话框,默认选择的是,下一步即可。
选择数据库对象对话框,里面包含表、视图、存储过程和函数,这里选择所需要的表,单击完成,弹出数据集属性对话框,列出该数据集的具体属性,这里的字段是无法进行添加或者删除的,确定即可。
回到报表设计页面,里面包含了两行的内容,第一行是表头,自定义输入表头既可,就是显示出来的列的标题,第二行是数据,单击右上角数据库图标,选择对应的数据集的属性,也就是具体的字段即可。
这里,在表头的标题中输入文字,显示为小方格,是字体类型的问题,选择一种你想要的字体就可以了。
此外,可以选择文本框,在报表中添加大标题,添加图片等等,选择菜单中的视图,最后一行是报表数据,选择其中的参数,右击添加参数,可以添加日期和时间等等。
这就是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