Advertisement

VB机房收费系统09——日结账单和周结账单

阅读量:

前言

在整个机房项目的过程中,这是一项具有挑战性的核心任务。在过去的连续三天里,在处理这两份关键账单时遇到了诸多技术难题,并最终得以圆满解决。敲定之后,在这里将我的心得与经验与大家分享出来,并期待得到大家的支持与反馈。

正文

这窗体不是敲出来,是调用和显示出来的!

在本处我们主要应用了报表系统,在此过程中我们可以采用以下几种方法:首先是在报表下开发一个设备生成器的同时还可以自行设计;另外一种方式则是直接选用提供的机房素材进行配置

基于我的实践经验而言,在制作报表方面比调试代码流程更为简单,在处理代码逻辑时也比寻找特定的控件更为顺利。

画报表

画报表参考博客:

调试报表代码

报表代码有点类似机房中用到的“导出EXECEL”代码,是万能的。

日结账单全代码:

复制代码
 Option Explicit

    
   '定义报表对象
    
    Dim Report As grproLibCtl.GridppReport
    
   
    
  Private Sub Form_Load()
    
       Dim StrSQL As String
    
       Dim strMsg As String
    
    
    
      '创建报表对象
    
       StrSQL = "select * from CheckDay_Info where date= '" & Date & "'  "
    
     
    
       '实例化报表
    
       Set Report = New grproLibCtl.GridppReport
    
    
    
       '载入报表模板文件
    
       Report.LoadFromFile (App.Path & "\daycheck.grf")
    
    
    
       '数据源连接
    
       Report.DetailGrid.Recordset.ConnectionString = connectstring
    
    
    
       '通过SELECT查询创建记录集
    
       Report.DetailGrid.Recordset.QuerySQL = StrSQL
    
        
    
       '显示报表中的内容
    
       GRDisplayViewer1.Report = Report
    
       GRDisplayViewer1.Start
    
    
    
  End Sub
    
  
    
 Private Sub cmddaylist_Click()
    
 '日结账单刷新
    
      
    
     Dim txtsql As String
    
     Dim msgtext As String
    
     Dim mrc As ADODB.Recordset
    
     
    
     txtsql = "select * from checkday_Info "
    
     Set mrc = ExecuteSQL(txtsql, msgtext)
    
      
    
     '刷新
    
     Report.DetailGrid.Recordset.QuerySQL = "select * from CheckDay_Info where date= '" & Date & "'  "
    
     GRDisplayViewer1.Refresh
    
 End Sub
    
  
    
 Private Sub cmdprintpreview_Click()
    
 '打印预览
    
       Report.PrintPreview (True)
    
  End Sub
    
  
    
  Private Sub cmdprint_Click()
    
  '打印,因为报表对象的print方法名与vb的内部定义方法有冲突所以要用中括号
    
  
    
      Report.[Print] (True)
    
 End Sub

周结账单全部代码

复制代码
 Dim WithEvents Report As grproLibCtl.GridppReport

    
  
    
  
    
  
    
 Private Sub cmdweeklist_Click()
    
 '账单刷新
    
     Dim txtsql As String
    
     Dim msgtext As String
    
     Dim mrc As ADODB.Recordset
    
     Dim mrc1 As ADODB.Recordset
    
     Dim mrc2 As ADODB.Recordset
    
     Dim mrc3 As ADODB.Recordset
    
     Dim mrc4 As ADODB.Recordset
    
     Dim mrc5 As ADODB.Recordset
    
     Dim RemainCash As Integer
    
     Dim RechargeCash As Integer
    
     Dim ConsumeCash As Integer
    
     Dim CancelCash As Integer
    
     Dim AllCash As Integer
    
     
    
     If DTPicker1.Value > DTPicker2.Value Then
    
     MsgBox "终止日期不能小于起始日期", 48, "提示"
    
     Exit Sub
    
     Else
    
     
    
     If DTPicker1.Value And DTPicker2.Value > Date Then
    
         MsgBox "小主,日子还没到呢", 48, "提示"
    
         DTPicker1.Value = Date
    
         DTPicker2.Value = Date
    
         Exit Sub
    
     Else
    
     
    
         txtsql = "select * from checkday_info where date between '" & DTPicker1.Value & "' and '" & DTPicker2.Value & "'"
    
         Set mrc = ExecuteSQL(txtsql, msgtext)
    
         
    
         If mrc.EOF Then
    
             MsgBox "该时间段没有数据!", 48, "提示"
    
             
    
             Exit Sub
    
         Else
    
             
    
             '删除check week表中的记
    
             
    
             txtsql = "delete from checkweek_Info"
    
             
    
             Set mrc1 = ExecuteSQL(txtsql, msgtext)
    
             
    
             '计算上次充值卡金额
    
             
    
                 mrc.MoveLast
    
                 RemainCash = mrc.Fields(0)
    
             
    
             '计算总充值金额mrc2
    
                 
    
     
    
                 txtsql = "select sum(rechargecash) from checkday_info where date between '" & DTPicker1.Value & " ' and '" & DTPicker2.Value & "'"
    
                 Set mrc2 = ExecuteSQL(txtsql, msgtext)
    
                 
    
                 If IsNull(mrc2.Fields(0)) = True Then
    
                     RechargeCash = 0
    
                 Else
    
                     RechargeCash = Trim(mrc2.Fields(0))
    
                 End If
    
                 
    
         
    
             
    
             '计算总消费金额
    
             
    
                 txtsql = "select sum(consumecash) from checkday_info where date between '" & DTPicker1.Value & "' and '" & DTPicker2.Value & "'"
    
                 Set mrc3 = ExecuteSQL(txtsql, msgtext)
    
                 
    
                     If IsNull(mrc3.Fields(0)) = True Then
    
                         ConsumeCash = 0
    
                     Else
    
                         ConsumeCash = Trim(mrc3.Fields(0))
    
                     End If
    
                         
    
             '计算总退卡金额
    
             
    
                 txtsql = "select sum(cancelcash) from checkday_info where date between '" & DTPicker1.Value & "' and '" & DTPicker1.Value & "'"
    
                 Set mrc4 = ExecuteSQL(txtsql, msgtext)
    
                 
    
                     If IsNull(mrc4.Fields(0)) = True Then
    
                         CancelCash = 0
    
                     Else
    
                         CancelCash = Trim(mrc4.Fields(0))
    
                     End If
    
                     
    
             '计算本期充值卡金额
    
             
    
                 mrc.MoveLast
    
                 AllCash = mrc.Fields(4)
    
                 
    
             '添加到check week表中
    
             
    
                 txtsql = "select * from checkweek_info"
    
                 Set mrc1 = ExecuteSQL(txtsql, msgtext)
    
                 mrc1.AddNew
    
                     mrc1.Fields(0) = RemainCash
    
                     mrc1.Fields(1) = RechargeCash
    
                     mrc1.Fields(2) = ConsumeCash
    
                     mrc1.Fields(3) = CancelCash
    
                     mrc1.Fields(4) = AllCash
    
                     mrc1.Fields(5) = Date
    
                     
    
                 mrc1.Update
    
                 
    
             '显示报表中的内容
    
                 
    
                 Report.DetailGrid.Recordset.QuerySQL = txtsql
    
                 GRDisplayViewer1.Refresh
    
                 
    
             '给报表的日期赋值
    
     
    
                 Report.ParameterByName("BeginDate").Value = Format$(DTPicker1.Value, "yyyy-mm-dd")
    
                 Report.ParameterByName("EndDate").Value = Format$(DTPicker2.Value, "yyyy-mm-dd")
    
                 Report.ParameterByName("XX").Value = UserName
    
                 
    
         End If
    
     End If
    
     End If
    
 End Sub
    
  
    
 Private Sub cmdprint_Click()
    
     Report.[Print] (True)
    
     
    
 End Sub
    
  
    
 Private Sub cmdprintpreview_Click()
    
     Report.PrintPreview (True)
    
     
    
 End Sub
    
  
    
 Private Sub Form_Load()
    
     txtsql = "select * from checkweek_info"
    
     
    
     
    
     '创建报表对象
    
     
    
     Set Report = New grproLibCtl.GridppReport
    
     
    
     '放入做好的报表文件
    
     
    
     Report.LoadFromFile (App.Path & "\weekcheck.grf")
    
     
    
     '连接数据源
    
     
    
     Report.DetailGrid.Recordset.ConnectionString = "FileDSN=charge.dsn;UID=sa;PWD=123456"
    
     Report.DetailGrid.Recordset.QuerySQL = txtsql
    
     
    
     
    
     '显示报表的内容
    
     GRDisplayViewer1.Report = Report
    
     GRDisplayViewer1.Start
    
     
    
     '给报表的日期赋值
    
     
    
     Report.ParameterByName("BeginDate").Value = Format$(DTPicker1.Value, "yyyy-mm-dd")
    
     Report.ParameterByName("EndDate").Value = Format$(DTPicker2.Value, "yyyy-mm-dd")
    
     Report.ParameterByName("XX").Value = UserName
    
 End Sub

VB报表控件

和数据库原理一样,我们需要把报表程序与VB程序连接在一起。

这就是Displayviewer控件

我们参考了较多的博客内容了解到,在下载报表软件之后会被引用,并且在勾选了两个红色方块之后会显示出来

但这两个红框在我这里根本就不显示。

因为这个原因,我花费了不少时间浏览了多篇相关博客,并向多位同事请教后仍未解决此问题,整整花费了三天时间才得以解决

在晓鸿大神的帮助之下弄清了原因。大家还记得配置机房时需要注册的3个控件吗?

主要是这三个伙伴!我的电脑为什么会出问题?这三个注册的控件不再正常工作。重新注册后发现报表控件显示出了账单。

主要是这三个伙伴!我的电脑为什么会出问题?这三个注册的控件不再正常工作。重新注册后发现报表控件显示出了账单。

报表dll,不会忘了......

全部评论 (0)

还没有任何评论哟~