您的位置:首页 > 编程语言 > VB

【机房收费】--VB让报表有生命

2016-08-11 21:28 169 查看
 【前言】

     机房收费系统完成了,收获很多,想要把现在的收获定格一下,写了这篇博客,希望与同学们一起交流,互相学习,共同进步。报表在数据库视频里面是有所耳闻的,但是并没有自己去做。现在接触报表,觉得还是比较容易接受的。

【[b]问题一】-- 报表制作与连接数据表[/b]

     报表是用来显示我们数据库中某张表的内容的,[b]打开Grid++Report设计器,所以第一步我们要做一张报表,第二步[/b]是连接报表与数据库,这个内容大家参考迎迎的博客:报表连接数据库。总结的非常的详细,图片很详细,这里我就不再赘述,关于报表与VB的连接我做一些补充。

【问题二】-- VB让报表参数正确显示 

     这一部分我也分了几个步骤来解释,以周报表为例,我们添加了系统变量来显示当前日期和时间,还添加了三个参数与VB中的内容作为连接。 这一部分很喜欢用VB让报表有生命这个形容词,PS:是借用雅雯同学的,下面看看如何操作吧~~

①  制表时间:当前日期时间。这个在VB里面有date函数,在报表里面它是一个系统变量,首先我们可以点击上面的钟表一样的图形,就是插入系统变量,将变量插入到想要到位置,感觉类似于VB中的添加控件,设置变量类型为当期日期时间就好了。

 


 

②  开始时间与结束时间:VB中咱们用周报表的时候展示的是一段时间的收入,从几号到几号。

③  首先我们需要添加需要的参数,在参数集合那里,添加我们需要的三个参数:BeginDate,EndDate,XX,接下来要做的是把这些参数和报表界面里的综合文字框联系起来,让这些类似于label一样的综合文字框有生命。

 



④  其次,在插入菜单选择插入综合文字框到想要插入的位置。这里我们插入了三个综合文字框,以BeginDate为例,其他两个也一样。我们可以在右侧更改文字框的属性.从数据里更改文本为BeginDate,这里的begindate要作为一个参数与VB里的DTPicker联系起来。所以要设置它的文本为参数类型的。

⑤  下面是将这些综合文字框和参数联系起来的顺序。这样这三个文字框就有了生命,显示的内容可以随着我们的在VB中的操作而变动。

 

 






 

 

 ===============================================================================

 走到这里,当然我们只是做好了报表里的工作,要实现整个过程还需要代码。

 

(1)显示具体某一段时间内各项数据,连接好数据表,代码如下

<span style="font-family:FangSong_GB2312;font-size:18px;"><strong>Dim StrSQL As String
Dim strMsg As String

'创建报表对象
StrSQL = "select * from CheckWeek_info where date > =             '" & DTP1.Value &"' and date < = '" & DTP2.Value & "'"

'实例化报表
Set Report = New grproLibCtl.GridppReport

'载入报表模板文件
Report.LoadFromFile (App.Path & "\周报表.grf")

'数据源连接
Report.DetailGrid.Recordset.ConnectionString = Connectstring()

'通过SELECT查询创建记录集
Report.DetailGrid.Recordset.QuerySQL = StrSQL

Report.ParameterByName("begindate").AsString =Format(DTP1.Value, "yyyy-mm-dd")
Report.ParameterByName("enddate").AsString =Format(DTP2.Value, "yyyy-mm-dd")
Report.ParameterByName("XX").AsString = Nowuser

'显示报表中的内容
GRDisplayViewer1.Report = Report
GRDisplayViewer1.start
</strong></span>






(2)刷新日结账单,将最新的数据重新加载一次。

Private Sub CmdSX_Click()     '刷新日结账单
'按照降序排列,ASC是按照升序排列
Report.DetailGrid.Recordset.QuerySQL = "SELECT TOP 1 * FROM Checkweek_Info ORDER BY Date DESC"
Report.ParameterByName("begindate").AsString =Format(DTP1.Value, "yyyy-mm-dd")
Report.ParameterByName("enddate").AsString =Format(DTP2.Value, "yyyy-mm-dd")
Report.ParameterByName("XX").AsString = Nowuser

GRDisplayViewer1.Refresh

End Sub

(3) 打印预览

Private Sub CmdShowPrint_Click()
Report.PrintPreview (True)    '打印预览
End Sub

(4)打印

Private Sub CmdPrint_Click() '打印
Report.[Print] (True) 'Print用中括号括起来, 为了与VB中的Print方法区别开

End Sub

【总结】

  报表初次见面可能会有陌生感,特别是Grid++Report设计器这个新事物,这个时候我们需要站在巨人的肩膀上,看看其他同学是怎么做的,看看师哥师姐是怎么做的,我们在参考他们的时候先盲人摸象,囫囵吞枣,然后当我们遇到问题的时候就要仔细去探索,精益求精了。

    感谢您的阅读~~  未完待续~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: