下机找好逻辑然后慢慢来,平静下心来,其实也不难。
主要逻辑和上机还是挺像的。
如图:
机房收费系统之下机
部分代码如下:
一、判断卡号是否为空:

If Trim(txtCardno.Text) = "" Then
    MsgBox "请输入卡号,卡号不能为空!", 48, "提示"
    Exit Sub '防止错误 3021

二、判断此卡是否存在

Else
    txtsql = "select * from student_info where cardno='" & txtCardno.Text & "'"
    Set mrc = ExecuteSQL(txtsql, msgtext)
    If mrc.EOF = True Then
        MsgBox "此卡不存在,请重新输入", 48, "提示"

三、检查此卡是否注销

Else
    txtsql = "select * from student_info where cardno='" & txtCardno.Text & "'and status='不使用'"
    Set mrc = ExecuteSQL(txtsql, msgtext)
   	 If mrc.EOF = False Then
            MsgBox "此卡已经被注销,请重新输入卡号", 48, "提示"
            txtCardno.Text = ""
            mrc.Close

四、检查此卡是否上机

 Else
       txtsql = "select * from online_info where cardno='" & txtCardno.Text & "'"
        Set mrc = ExecuteSQL(txtsql, msgtext)
        If mrc.EOF = True Then
            MsgBox "此卡未上机,请输入其他卡号!", 48, "提示"
            Exit Sub '防止出现错误 3021

五、计算消费金额,这里只有小于两分钟的,大于两分钟的和计算消费余额写在了一起。

Else
            txtofftime.Text = Time
            txtoffdate.Text = Date
            txtlinetime.Text = DateDiff("n", txtOntime.Text, txtofftime.Text) '注意datediff函数的使用 n代表计算的单位,这里是分钟,后面依次是开始时间和结束时间。
            '计算消费金额
            '先判断消费时间是否小于两分钟,如果小于两分钟,则不收费的
            txtsql = "select * from basicdata_info"
            Set mrc1 = ExecuteSQL(txtsql, msgtext)
            txtsql = "select* from student_info where cardno='" & txtCardno.Text & "'"
            Set mrc = ExecuteSQL(txtsql, msgtext)
            If txtlinetime.Text <= 2 Then
                txtconsume.Text = 0
                txtbalance.Text = mrc.Fields(7)
                   

六、计算消费余额,用已有的钱减去消费的金额。这里分为固定用户和临时用户,临时用户是一小时三元钱,固定用户是一小时两元钱,这在basicbase表中有显示。

If mrc.Fields(14) = "固定用户" Then
      txtconsume.Text = (txtlinetime.Text / mrc1.Fields(2)) * mrc1.Fields(0)
         '计算消费余额
      txtbalance.Text = Format(Val(mrc.Fields(7)) - Val(txtconsume.Text), "0.00")
 Else'如果不是固定用户的话
      txtconsume.Text = (txtlinetime.Text / mrc1.Fields(2)) * mrc1.Fields(1)
     
     '计算消费余额
      txtbalance.Text = Trim(Format(Val(mrc.Fields(7)) - Val(txtconsume.Text), "0.00"))
          
     End If

然后将信息同步line表,将信息从online表中删除

  
                        '将下机的信息写到line表当中
                        txtsqlline = "select * from line_info"
                        Set mrcline = ExecuteSQL(txtsqlline, msgtext)
                        mrcline.AddNew
                        mrcline.Fields(8) = Trim(txtoffdate.Text)
                        mrcline.Fields(9) = txtofftime.Text
                        mrcline.Fields(10) = txtlinetime.Text
                        mrcline.Fields(11) = Val(txtconsume.Text)
                        mrcline.Fields(12) = Val(txtbalance.Text)
                        '将信息从online表中删除
                        txtsql = "select * from online_info"
                        Set mrc = ExecuteSQL(txtsql, msgtext)
                        Label15.Caption = mrc.RecordCount - 1
                        mrc.Delete
                        mrc.Update
                        mrc.Close

现在明白了,但当时弄了差不多一个上午,回过来看也不难。

相关文章:

  • 2021-10-03
  • 2021-12-21
  • 2021-10-28
  • 2021-09-19
  • 2021-08-22
  • 2022-01-13
  • 2022-01-08
  • 2021-07-19
猜你喜欢
  • 2021-11-06
  • 2021-10-03
  • 2021-07-06
  • 2021-04-10
相关资源
相似解决方案