【第一次机房收费系统】退卡

机房收费系统在我看来就是对知识点的重复使用与学习加深的过程。
在敲操作员权限里面的充值和退卡的时候,我发现这两个窗体实现的功能很相似,在逻辑上相差无几。
当然,不管在你敲哪个窗体,做什么软件,你的逻辑,你的思路是最重要的。只有你的逻辑清楚了,你的代码才会清楚。这个让我联想到了概念设计到逻辑设计的转换。
在这里主要理一下退卡的思路和过程。
在你着手敲退卡的时候,首先要理清逻辑,多点几遍源程序,带着问题去点,善于发现问题。理清之后,画出一个流程图。
这里写图片描述
逻辑理清,流程图画好,接下来代码就是小case。

    Dim txtsql As String
    Dim msgText As String
    Dim mrc As ADODB.Recordset
    Dim mrc1 As ADODB.Recordset
    Dim mrc2 As ADODB.Recordset

    '1、判断是否输入卡号'
    If txtCardNo.Text = "" Then   
        MsgBox "请输入卡号!", vbOKOnly + vbExclamation, "苏轼提醒您"
        txtCardNo.SetFocus
    Else
        txtsql = "select*from student_info where cardno='" & Trim(txtCardNo.Text) & "'"
        Set mrc = ExecuteSQL(txtsql, msgText)
        If mrc.EOF Then    '判断卡号是否存在'
                MsgBox "卡号不存在或已不再使用!", vbOKOnly + vbExclamation, "苏轼提醒您"
                txtCardNo.SetFocus
                txtCardNo.Text = ""  '使卡号为空'
        Else

        '判断卡是否在使用状态'
        txtsql = "select * from student_info where cardNo = '" & Trim(txtCardNo.Text) & "' and status = '" & "使用" & "'"
        Set mrc = ExecuteSQL(txtsql, msgText)
        If mrc.EOF Then        '光标可以移动到最后一行所以数据库中没有相应的卡号' 
           MsgBox "该卡未使用,请重新输入卡号。", vbOKOnly + vbExclamation, "苏轼提醒您"
           txtCardNo.Text = ""
           txtCardNo.SetFocus
           Exit Sub
        Else

            '判断是否在上机'
            txtsql = "select * from online_info where cardNo = '" & Trim(txtCardNo.Text) & "' "
            Set mrc1 = ExecuteSQL(txtsql, msgText)
            If mrc1.EOF = False Then  ' 光标可以移动到最后一行所以数据库中没有相应的卡号'
               MsgBox "该卡在上机,请下机后再退卡。", vbOKOnly + vbExclamation, "苏轼提醒您"
               txtCardNo.Text = ""
               txtCardNo.SetFocus
            Exit Sub
            Else
                txtsql = "select * from cancelcard_info where cardNo = '" & Trim(txtCardNo.Text) & "' and status = '" & "使用" & "'"
                Set mrc2 = ExecuteSQL(txtsql, msgText)

                mrc2.AddNew
                mrc2.Fields(0) = Trim(mrc.Fields(1))
                mrc2.Fields(1) = Trim(mrc.Fields(0))
                mrc2.Fields(2) = Val(mrc.Fields(7))
                mrc2.Fields(3) = Date
                mrc2.Fields(4) = Time
                mrc2.Fields(5) = Trim(UserName)
                mrc2.Fields(6) = "未结账"
                mrc2.Update

                '显示信息'
                txtNotes.Text = "退卡卡号:" & txtCardNo.Text & vbCrLf & vbCrLf & _
                   "应退款金额:" & Trim(mrc.Fields(7)) & vbCrLf & vbCrLf & _
                   "退卡日期:" & Date & vbCrLf & vbCrLf & _
                   "退卡时间:" & Time & vbCrLf & vbCrLf & _
                   "办理退卡老师:" & mrc.Fields(9)

                End If
            End If
        End If
    End If  

在更新student表的时候最简单但是最麻烦的办法就是给数据库中那一行数据重新赋值,但是有好多值没有发生变化,所以我想的是直接更新对应数值,但是出现了一个问题。这段代码貌似有毒,每次运行之后程序没有响应,但是数据库中的值是改了的。

'更新student表'
txtsql = "select *from student_info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc = ExecuteSQL(txtsql, msgText)
Do While Not mrc.EOF
mrc!cash = 0
mrc!Status = "未使用"
mrc.Update
Loop

有没有大神知道为什么,或者有其他的办法?可以告诉我一声。

评论 50
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值