机房收费系统之日结账单表

窗体目的:该窗体是用来查看每天所有卡内的金额信息(充值,注册,消费和退卡信息)。

窗体功能

1,只查询当天的充值卡信息。

2,查询全部的充值卡信息。

3,查询一段时间内的充值卡信息。

4,对每张表分别进行打印和预览。

  

思路一:

在这里我用到了三张Grid++Report报表,对于该报表,我对其认识是:

它有两种方法调用数据库中的表:通过模板和代码。

1,通过模板比较简单。你只需要在设计模板时查询条件写入相应的条件,然后在使用时直接调用该模板即可。该方法比较简单但是不能灵活使用(不能在窗体中更改查找的条件)

2,通过代码比较灵活。这种方法其实就是把模板中的查询条件转移到了我们的代码中(不过多了一个写入数据的函数),也就是说该方法是自己编写的方法将表中的数据写入到报表中的,而这里设计的模板只不过是一个背景而已,那么主要过程都是自己写的,当然就有控制权了,所以该方法可灵活变换你想要查找的表和字段。

再来就是对DTpicker的使用(这个也是第一次接触啊!),感觉这个控件挺好用的,在这里我主要用到了它的Value属性和Closeup事件。

对于查找范围内的充值卡信息就是在该过程中完成的:

'在窗体加载中

Report3.LoadFromFile ("E:/SQL/收费系统/机房收费系统/Management.grf")
GRDisplayViewer3.Report = Report3

'选择开始时间
Private Sub DTPstart_CloseUp()
    If (DTPstart.Value > Date Or DTPstart.Value > DTPend.Value) Then
        MsgBox "开始时间不能大于现在或结束时间!", vbExclamation + vbOKOnly, "警告"
        DTPstart.Value = Date
        Exit Sub
    End If
    GRDisplayViewer3.Visible = True
    GRDisplayViewer1.Visible = False
    GRDisplayViewer2.Visible = False

    GRDisplayViewer3.Start
    GRDisplayViewer3.Refresh

End Sub

思路二:

只用一张Grid++Rport表;然后今天和全部的信息通过对DTPicker值的更改及调用来完成:

例如:

'在窗体加载中

Report.LoadFromFile ("E:/SQL/收费系统/机房收费系统/Management.grf")
GRDisplayViewer.Report = Report

'选择开始时间
Private Sub DTPstart_CloseUp()
    If (DTPstart.Value > Date Or DTPstart.Value > DTPend.Value) Then
        MsgBox "开始时间不能大于现在或结束时间!", vbExclamation + vbOKOnly, "警告"
        DTPstart.Value = Date
        Exit Sub
    End If 
    GRDisplayViewer.Start
    GRDisplayViewer.Refresh

End Sub

'显示今天
Private Sub cmdRefreshToday_Click()
    DTPend.Value = Date
    DTPstart.Value = Date
    Call DTPstart_CloseUp

    Exit Sub

End Sub

'显示全部
Private Sub cmdRefreshAll_Click()
    Dim strSQL As String
    Dim MsgString As String
    Dim mrs As ADODB.Recordset

    strSQL = "select * from Daycheckout where Date='" & Format(Date, "yyyy/mm/dd") & "'"
    Set mrs = ExecuteSQL(strSQL, MsgString)
    If mrs.EOF Then
        Call cmdRefreshToday_Click
        Exit Sub
    Else
        mrs.MoveLast
        DTPend.Value = mrs.Fields(5)
        mrs.MoveFirst
        DTPstart.Value = mrs.Fields(5)
        Call DTPstart_CloseUp
        Exit Sub
    End If

End Sub

对于涉及到钱的部分,我调用了三张表:

1,当天充值金额:通过调用学生信息表中当天的注册金额加上充值表中当天的充值金额。

'获取充值金额
strSQL = "select * from Recharge where RechargeDate='" & Format(Date, "yyyy/mm/dd") & "'"
Set mrs(2) = ExecuteSQL(strSQL, MsgString)
If mrs(2).EOF Then
    Recharge = 0
Else
    Do While Not (mrs(2).EOF)
        Recharge = Recharge + Val(Trim(CStr(mrs(2).Fields(1))))
        mrs(2).MoveNext
    Loop

    ’Recharge = Recharge + Register(我之前写到了这里,结果当充值表为空时,充值金额为0,即使有注册金额,Recharge也不能获得)
End If
Recharge = Recharge + Register        ‘Register是通过学生信息表获得的注册金额

2,当天消费金额:通过遍历上机记录表来获得当天的消费金额。

3,当天退还余额:通过遍历退卡记录表获得当天的退还金额。

3,本期充值卡余额:通过遍历最新余额表来获得。

4,上期充值卡余额:通过前三者的关系来获得(通过本期充值卡余额+当天退还金额+当天消费金额-当天充值金额),我这是倒过来算的;当然还有其他的方法,比如先获得前一天的余额,将其赋值给今天的上期余额也可以(因为我的sql语句写的是取得今天的日结账记录,所以获得前一天的还得再写个表,觉着还是这样比较好,虽然是倒着推的)。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值