机房收费系统——下机

版权声明:未经本人同意不得转载! https://blog.csdn.net/Hellen0708/article/details/82804162

前言

下机在机房中是比较难的,也不能说难,在搞懂逻辑之前只能说迷糊,搞懂以后你绝对就不说难了。其中也遇到了很多问题,比如时间格式的转化,这么多表到底该删除哪个,更新哪个。不过已经被我一一的解决了,流程图真的是个好工具!其中,对于上机表的删除和下机表的更新可以使用触发器实现,在优化中在继续研究!

在这里插入图片描述

代码片段

Private Sub cmdOffline_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 StartDate As Date
    Dim EndDate As Date
    Dim StartTime As Date
    Dim Endtime As Date
    Dim CostDate As Long
    Dim CostTime As Long
    Dim a As Integer
        
        'mrc连接online表
        txtSQL = "select * from online_info where cardno='" & Trim(txtCardNo.Text) & "'"
        Set mrc = ExecuteSQL(txtSQL, MsgText)
        
        'mrc1连接line表
        txtSQL = "select * from line_info where cardno='" & Trim(txtCardNo.Text) & "'"
        Set mrc1 = ExecuteSQL(txtSQL, MsgText)
        
        'mrc2连接student表
        txtSQL = "select * from student_info where cardno='" & Trim(txtCardNo.Text) & "'"
        Set mrc2 = ExecuteSQL(txtSQL, MsgText)
        
        'mrc3连接basicdata表
        txtSQL = "select * from basicdata_info"
        Set mrc3 = ExecuteSQL(txtSQL, MsgText)
        
        'mrc4连接cancelcard表
        txtSQL = "select * from cancelcard_info where cardno='" & Trim(txtCardNo.Text) & "'"
        Set mrc4 = ExecuteSQL(txtSQL, MsgText)
        
        If Trim(txtCardNo.Text) = "" Then
            MsgBox "请输入卡号!", 48, "警告"
            txtCardNo.SetFocus
            Exit Sub
        End If
        
        If IsNumeric(txtCardNo.Text) = False Then
            MsgBox "卡号请输入数字!", 48, "警告"
            txtCardNo.SetFocus
            txtCardNo.Text = ""
            Exit Sub
        End If
        
        If mrc2.Fields(0) <> Trim(txtCardNo.Text) Then
            MsgBox "该卡号未注册!", 48, "警告"
            Exit Sub
        End If
        
        If mrc.Fields(0) = Trim(txtCardNo.Text) Then
            MsgBox "学生没有上机,无法下机!", 48, "警告"
            Exit Sub
        End If
        
        '计算消费时间
        labOffDate.Caption = Date
        labOffTime.Caption = Time
        
        StartDate = Format(labOnDate.Caption, "yyyy-mm-dd")
        StartTime = Format(Trim(labOnTime.Caption), "hh:mm:ss")
        EndDate = Format(Trim(Date), "yyyy-mm-dd")
        Endtime = Format(Trim(Time), "hh:mm:ss")
        
        CostDate = DateDiff("n", StartDate, EndDate)
        CostTime = DateDiff("n", StartTime, Endtime)
        
        labCTime.Caption = Format(Str(CostDate + CostTime))
        
        '判断消费时间是否小于最小上机时间,计算消费金额
        If labCTime.Caption <= mrc3.Fields(3) Then
            labCMoney = 0
            labBalance.Caption = mrc2.Fields(7)
        Else
            If mrc2.Fields(14) = "固定用户" Then
                labCMoney.Caption = mrc3.Fields(0).Value * ((labCTime.Caption) / 60)

            Else
                labCMoney.Caption = mrc3.Fields(1).Value * ((labCTime.Caption) / 60)
 
            End If
        End If
        
        '计算余额
        labBalance.Caption = mrc2.Fields(7).Value - labCMoney.Caption
        
        '删除online_info表上信息
        mrc.Delete
        
        
        '更新line_info表
        mrc1.Delete
        With mrc1
            .AddNew
            .Fields(1) = txtCardNo.Text
            .Fields(2) = labSID.Caption
            .Fields(3) = labName.Caption
            .Fields(4) = labDept.Caption
            .Fields(5) = Trim(labSex.Caption)
            .Fields(6) = labOnDate.Caption
            .Fields(7) = labOnTime.Caption
            .Fields(8) = labOffDate.Caption
            .Fields(9) = labOffTime.Caption
            .Fields(10) = labCTime.Caption
            .Fields(11) = labCMoney.Caption
            .Fields(12) = labBalance.Caption
            .Fields(13) = "正常下机"
            .Fields(14) = VBA.Environ("computername")
            .Update
            .MoveNext
        End With
        
        '更新cancelcard_info表
'        mrc4.Delete
        With mrc4
            .AddNew
            .Fields(0) = labSID.Caption
            .Fields(1) = txtCardNo.Text
            .Fields(2) = labBalance.Caption
            .Fields(3) = labOffDate.Caption
            .Fields(4) = labOffTime.Caption
            .Fields(5) = userName
            .Fields(6) = "正常下机"
            .Update
            .MoveNext
        End With
        
        '更新学生表
        mrc2.Delete
        With mrc2
            .AddNew
            .Fields(0) = txtCardNo.Text
            .Fields(1) = labSID.Caption
            .Fields(2) = labName.Caption
            .Fields(4) = labDept.Caption
            .Fields(3) = Trim(labSex.Caption)
            
            .Fields(7) = labBalance.Caption
            .Fields(8) = ""
            .Fields(9) = userName
            .Fields(10) = "使用"
            .Fields(11) = "未结账"
            .Fields(12) = labOffDate.Caption
            .Fields(13) = labOffTime.Caption
            .Fields(14) = "固定用户"
            .Update
            .MoveNext
        End With
        
End Sub

结语

要是我做机房之前让我看到这一段代码绝对就被吓死了,现在可以靠自己写代码实现这些功能。不要自己吓自己,没有解决不了的事情,只有逃避问题的自己,遇到困难积极面对解决就完了!机房就是i+1的学习材料,我们之前有了学生的铺垫,再做机房虽然有一些难度,但是都是可以克服的难度,继续加油!

猜你喜欢

转载自blog.csdn.net/Hellen0708/article/details/82804162