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

前端之家收集整理的这篇文章主要介绍了【机房收费】--VB让报表有生命前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

【前言】

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

问题一】-- 报表制作与连接数据表

报表是用来显示我们数据库中某张表的内容的,打开Grid++Report设计器,所以第一步我们要做一张报表,第二步是连接报表与数据库,这个内容大家参考迎迎的博客报表连接数据库。总结的非常的详细,图片很详细,这里我就不再赘述,关于报表与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("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设计器这个新事物,这个时候我们需要站在巨人的肩膀上,看看其他同学是怎么做的,看看师哥师姐是怎么做的,我们在参考他们的时候先盲人摸象,囫囵吞枣,然后当我们遇到问题的时候就要仔细去探索,精益求精了。

感谢您的阅读~~ 未完待续~~

原文链接:https://www.f2er.com/vb/256889.html

猜你在找的VB相关文章