【机房】上下机实时判断余额

前言:

第一次去验收机房的时候,师父问我说,上机的时候怎样才能保证学生不会因为上机时间太长而导致余额为负数呢但是我没有仔细想,但是后来师父告诉我可以实现一个实时判断余额的功能,于是我便着手做这个功能思路:计时器控件

思路:

  • 利用timer控件
  • 时间间隔为一分钟(Timer允许的最大时间间隔)
  • 连接需要的表
  • 将OnLine表与Student表连接起来
  • 计算上机时间(与“下机”下同)
  • 计算余额
  • 进行循环

具体实施:

Private Sub Timer2_Timer()
  Dim txtsql As String
  Dim msgtext As String
  Dim mrcOnL As ADODB.Recordset
  Dim mrcStu As ADODB.Recordset
  Dim mrcBas As ADODB.Recordset
  Dim Balance As Integer

 '将OnLine表与student表进行连接
  txtsql = "select cash from student_Info,OnLine_Info where _ 
      student_Info.cardno=OnLine_Info.cardno "
  Set mrcStu = executeSQL(txtsql, msgtext)

  '连接Online表
  txtsql = "select * from OnLine_Info "
  Set mrcOnL = executeSQL(txtsql, msgtext)

  '连接Basic表
  txtsql = "select * from BasicData_Info "
  Set mrcBas = executeSQL(txtsql, msgtext)

'当OnLine表不为空时,进行计算与判断
Do While Not mrcOnL2.EOF

 '计算上机时长
  intlinetime = (Date - DateValue(mrcOnL2!ondate)) * 1440 _
      + (Hour(Time) - Hour(TimeValue(mrcOnL2!OnTime))) * 60 _
      + (Minute(Time) - Minute(TimeValue(mrcOnL2!OnTime)))

 '计算余额
  If Trim(mrcOnL.Fields(1)) = "临时用户" Then '若为临时用户,计算余额
      Balance = Trim(mrcStu.Fields(0)) - (Int(intlinetime / 30) + 1) * _ 
       (Trim(mrcBas.Fields(1)) / 2)
  Else '若为固定用户,消费金额的计算
      Balance = Trim(mrcStu.Fields(0)) - (Int(intlinetime / 30) + 1) * _ 
       (Trim(mrcBas.Fields(0)) / 2)
  End If

   '进行判断
  If Balance < Trim(mrcBas.Fields(5)) Then
  txtCardNo.Text = mrcOnL.Fields(0)
  MDIFrom.cmdOffLine = True
  End If

  mrcOnL.MoveNext
  mrcStu.MoveNext
 Loop
end sub

总结:在有思路之前我觉得要实现这个功能很难,而且是相当的难,但是自己真正去做了才发现原来也不是很难啊。

特别感谢:

感谢师父对我的指导,感谢伟杰同志的帮助,其实循环以及连接两个表是伟杰想出来的。

猜你喜欢

转载自blog.csdn.net/suzan_bingtong/article/details/79439532