所有学生下机循环MHSFlexGrade,不遍历OnLine表的方法——机房遇到问题(三)

前端之家收集整理的这篇文章主要介绍了所有学生下机循环MHSFlexGrade,不遍历OnLine表的方法——机房遇到问题(三)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

机房正式看似简单,实则变化无穷啊!

一个下午一直想着怎么让所有学生下机!想了一个下午起初想的是要遍历两张表Online和Line,但是想想都这么困难。其实也难怪,我非要先做左右学生下机而不是所选学生下机,所以很是费劲。这就告诉我们一个问题:做事情要由易到难,不能好高骛远!切记!切记!切记!

之后,振华一语点醒梦中人,先做所选学生下机,然后将单个下机的重复只遍历Online表就好了!也是这句话打开了我的思路,突然想到那么我要是循环一下MHFlexGrade这个控件所选出的记录是不是也可以呢?只要知道选出多少记录就行啦啊!于是就有以下代码

  1. '用来存放系统当前时间
  2. Dim OffTime As Variant
  3. Dim OffDate As Variant
  4. '存放转化后的下机时间
  5. Dim OffDate2 As Single
  6. Dim OffTime2 As Single
  7. '下机时间之和
  8. Dim OffTimeSUM As Single
  9. '存放上机时间
  10. Dim OnTime As Single
  11. Dim OnDate As Single
  12. '上机时间之和
  13. Dim OnTimeSUM As Single
  14. '存放消费、每小时的费用和余额
  15. Dim Consume As Currency
  16. Dim ConsumeAnHour As Currency
  17. Dim Cash As Currency
  18. '存放消费时间和转化为分钟的消费时间
  19. Dim ConsumeTime As Variant
  20. Dim ConsumeTimem As Single
  21. '每个数据库中的选择语句
  22. Dim mrcl As ADODB.Recordset
  23. Dim txtsqll As String
  24. Dim mrco As ADODB.Recordset
  25. Dim txtsqlo As String
  26. Dim mrcb As ADODB.Recordset
  27. Dim txtsqlb As String
  28. Dim mrcs As ADODB.Recordset
  29. Dim txtsqls As String
  30. Dim MsgText As String
  31. Private Sub allsoffMenu_Click()
  32. '定义cardno用来记录每条记录的卡号
  33. Dim cardNo As Single
  34. 'i来记录行数
  35. Dim i As Integer
  36. '总行数减一为记录的总数
  37. For i = 1 To myFlexGrid.Rows - 1
  38. cardNo = Trim(myFlexGrid.TextMatrix(i,0))
  39. txtsqls = "select * from student_Info where cardno='" & cardNo & "'" & " and status='" & "使用" & "'"
  40. Set mrcs = Executesql(txtsqls,MsgText)
  41. txtsqll = "select * from Line_Info where cardno='" & cardNo & "'" & " and status='" & "正常上机" & "'"
  42. Set mrcl = Executesql(txtsqll,MsgText)
  43. txtsqlo = "select * from OnLine_Info where cardno='" & cardNo & "'"
  44. Set mrco = Executesql(txtsqlo,MsgText)
  45. txtsqlb = "select * from BasicData_Info"
  46. Set mrcb = Executesql(txtsqlb,MsgText)
  47. '取上机时间
  48. OnTime = CDate(Trim(mrco!OnTime))
  49. OnDate = CDate(Trim(mrco!OnDate))
  50. '取下机时间
  51. OffTime = Format(Now(),"hh:mm:ss")
  52. OffDate = Format(Now(),"yyyy-mm-dd")
  53. mrcl!OffTime = OffTime
  54. mrcl!OffDate = OffDate
  55. mrcl.Update
  56. '计算下机总时间
  57. OffDate2 = CDate(Trim(mrcl!OffDate))
  58. OffTime2 = CDate(Trim(mrcl!OffTime))
  59. ConsumeTime = CDate((OffDate2 - OnDate) + (OffTime2 - OnTime))
  60. '计算下机时的总时间并转化为分钟
  61. OnTimeSUM = CDate(Trim(mrco!OnDate) + " " + Trim(mrco!OnTime))
  62. OffTimeSUM = CDate(Trim(mrcl!OffDate) + " " + Trim(mrcl!OffTime))
  63. ConsumeTimem = DateDiff("n",Trim(OnTimeSUM),Trim(OffTimeSUM))
  64. ’时间的处理上一定有简化的方法,不过我试了好多次总是出错,所以就用这个比较笨的办法了
  65. '判断上机时间时候大于准备时间,若小于则花费为0
  66. If ConsumeTimem < mrcb!PrepareTime Then
  67. Consume = 0
  68. Cash = mrcs!Cash
  69. mrcl!OffTime = mrco!OnTime
  70. mrcl!OffDate = mrco!OnDate
  71. mrcl!ConsumeTime = 0
  72. mrcl!Status = "正常下机"
  73. mrcl.Update
  74. Else
  75. '判断用户类型
  76. If Trim(mrcs!Type) = "固定用户" Then
  77. ConsumeAnHour = mrcb!Rate
  78. Else
  79. ConsumeAnHour = mrcb!tmpRate
  80. End If
  81. '计算消费金额
  82. Consume = (ConsumeTimem / 60) * ConsumeAnHour
  83. '计算余额
  84. Cash = Trim(mrcl!Cash) - Consume
  85. End If
  86. '计算消费金额
  87. Consume = (ConsumeTimem / 60) * ConsumeAnHour
  88. '计算余额
  89. Cash = Trim(mrcl!Cash) - Consume
  90. '向表中更新数据
  91. mrcl!ConsumeTime = ConsumeTime
  92. mrcl!Consume = Consume
  93. mrcl!Cash = Cash
  94. mrcl!Status = "正常下机"
  95. mrcl.Update
  96. mrcs!Cash = mrcl!Cash
  97. mrcs.Update
  98. mrco.Delete
  99. mrco.Update
  100. MsgBox "所有学生已下机",vbOKOnly + vbExclamation,"提示"
  101. '触发加载事件更新显示的数据
  102. Dim mrc As ADODB.Recordset
  103. Dim txtsql As String
  104. txtsql = "select * from OnLine_info "
  105. Set mrc = Executesql(txtsql,MsgText)
  106. With myFlexGrid
  107. .Rows = 1
  108. .CellAlignment = 4
  109. .TextMatrix(0,0) = "卡号"
  110. .TextMatrix(0,1) = "姓名"
  111. .TextMatrix(0,2) = "上机日期"
  112. .TextMatrix(0,3) = "上机时间"
  113. .TextMatrix(0,4) = "机房号"
  114. End With
  115. Next
  116. End Sub
望大家多多指正,小弟一定虚心接受,做改进!

猜你在找的VB相关文章