Desembarcar todos
Consulte el siguiente código para la realización de todas las funciones fuera de la máquina.
Private Sub AllOutLine_Click() '全部下机
Rem:连接Online表判断是否有上机的人员
TxtSQL = "select * from Online_info"
Set mrcOnline = ExecuteSQL(TxtSQL, MsgText)
Do While Not MSFlexGrid1.Rows = 1
If mrcOnline.EOF = True Then
MsgBox "没有人员上机,无法进行下机操作", 64, "温馨提示"
Else
'查询上机表
TxtSQL = "select * from Online_info where cardno='" & MSFlexGrid1.TextMatrix(1, 0) & "'"
Set mrcOnline = ExecuteSQL(TxtSQL, MsgText)
'计算消费时长。运用到了DateDiff函数
Day = DateDiff("d", mrcOnline.Fields(6), Date) '计算上机下机的日期差
Minute = DateDiff("n", mrcOnline.Fields(7), Time) '计算上机下机的同日时间差
ConsumeTime = 1440 * Val(Day) + Minute '计算总时间差,分钟为单位
'查询学生表
TxtSQLStu = "select * from student_Info where cardno='" & MSFlexGrid1.TextMatrix(1, 0) & "'"
' txtSQLStu = "select * from student_info whewe cardno='" & MSHFlexGrid1.TextMatrix(1, 0) & "'"
Set mrcStu = ExecuteSQL(TxtSQLStu, MsgtextStu)
'查询基础数据表
TxtSQLBasic = "select * from Basicdata_info"
Set mrcBasic = ExecuteSQL(TxtSQLBasic, MsgtextBasic)
'判断用户类型,扣钱
If Trim(mrcOnline.Fields(1)) = "固定用户" Then
Money = Round((mrcBasic.Fields(0) / 60 * ConsumeTime)) '计算固定用户金额
Balance = Val(mrcStu.Fields(7)) - Val(Money)
Else
Money = Round((mrcBasic.Fields(1) / 60 * ConsumeTime)) '计算固定用户金额
Balance = Val(mrcStu.Fields(7)) - Val(Money)
'修改student表中的余额
mrcStu.Fields(7) = Trim(Balance)
mrcStu.Fields(11) = "未结账"
End If
Rem:将上机记录写进line表
txtSQLLine = "select * from line_info where cardno='" & MSFlexGrid1.TextMatrix(1, 0) & "'"
Set mrcLine = ExecuteSQL(txtSQLLine, MsgtextLine)
mrcLine.AddNew
mrcLine.Fields(1) = mrcOnline.Fields(0) '卡号
mrcLine.Fields(2) = mrcOnline.Fields(2) '学号
mrcLine.Fields(3) = mrcOnline.Fields(3) '姓名
mrcLine.Fields(4) = mrcOnline.Fields(1) '系别
mrcLine.Fields(5) = mrcOnline.Fields(5) '性别
mrcLine.Fields(6) = mrcOnline.Fields(6) '上机日期
mrcLine.Fields(7) = mrcOnline.Fields(7) '上机时间
mrcLine.Fields(8) = Date '下机日期
mrcLine.Fields(9) = Time '下机时间
mrcLine.Fields(10) = ConsumeTime '消费时间
mrcLine.Fields(11) = Money '消费金额
mrcLine.Fields(12) = Balance '余额
mrcLine.Fields(13) = "正常下机"
mrcLine.Fields(14) = Trim(VBA.Environ("computername"))
mrcLine.Update
mrcOnline.Delete
MSFlexGrid1.RemoveItem 1 '删除控件中的本行数据
End If
Loop
MsgBox "下机成功", 64, "温馨提示"
FrmMain.LblPeople.Caption = 0
End Sub
Los datos en el control deben eliminarse directamente después de salir de la computadora. El código que juega el papel principal en la eliminación es:
MSFlexGrid1.RemoveItem 1 '删除控件中的本行数据
Error en tiempo real 30015
El problema que tengo aquí es que todos los datos en el control deben eliminarse después de que todas las computadoras estén apagadas, pero hay un error en tiempo real 300015
Después de consultar, se encontró que el problema apareció en las propiedades de control de MSFlexGrid.
Solución: haga clic con el botón derecho para seleccionar las propiedades del control, cambie su fila fija y cambie de 1 a 0
Seleccionar para desmontar
La idea es marcar primero el seleccionado, para que al borrar solo se borre la línea marcada
Código:
Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
'获取选中不连续行的权限,及实现多行选中
Dim col As Integer
If MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5) = "√" Then
MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5) = ""
'改变行颜色(变为没选中之前的)
For col = 0 To MSFlexGrid1.Cols - 1
MSFlexGrid1.col = col
MSFlexGrid1.CellBackColor = vbWhite
Next col
Else
MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5) = "√"
'改变行颜色(选中后的颜色)
For col = 0 To MSFlexGrid1.Cols - 1
MSFlexGrid1.col = col
MSFlexGrid1.CellBackColor = vbYellow
Next col
End If
End Sub
Private Sub outline_Click()
Dim m, a As Integer
m = MSFlexGrid1.Rows - 1
For a = 1 To m
If MSFlexGrid1.TextMatrix(m, 5) = "√" Then
'查询上机表
TxtSQL = "select * from Online_info where cardno='" & MSFlexGrid1.TextMatrix(m, 0) & "'"
Set mrcOnline = ExecuteSQL(TxtSQL, MsgText)
'计算消费时长。运用到了DateDiff函数
Day = DateDiff("d", mrcOnline.Fields(6), Date) '计算上机下机的日期差
Minute = DateDiff("n", mrcOnline.Fields(7), Time) '计算上机下机的同日时间差
ConsumeTime = 1440 * Val(Day) + Minute '计算总时间差,分钟为单位
'查询学生表
TxtSQLStu = "select * from student_Info where cardno='" & MSFlexGrid1.TextMatrix(m, 0) & "'"
Set mrcStu = ExecuteSQL(TxtSQLStu, MsgtextStu)
'查询基础数据表
TxtSQLBasic = "select * from Basicdata_info"
Set mrcBasic = ExecuteSQL(TxtSQLBasic, MsgtextBasic)
'判断用户类型,扣钱
If Trim(mrcOnline.Fields(1)) = "固定用户" Then
Money = Round((mrcBasic.Fields(0) / 60 * ConsumeTime)) '计算固定用户金额
Balance = Val(mrcStu.Fields(7)) - Val(Money)
Else
Money = Round((mrcBasic.Fields(1) / 60 * ConsumeTime)) '计算固定用户金额
Balance = Val(mrcStu.Fields(7)) - Val(Money)
'修改student表中的余额
mrcStu.Fields(7) = Trim(Balance)
mrcStu.Fields(11) = "未结账"
End If
Rem:将上机记录写进line表
txtSQLLine = "select * from line_info where cardno='" & MSFlexGrid1.TextMatrix(m, 0) & "'"
Set mrcLine = ExecuteSQL(txtSQLLine, MsgtextLine)
mrcLine.AddNew
mrcLine.Fields(1) = mrcOnline.Fields(0) '卡号
mrcLine.Fields(2) = mrcOnline.Fields(2) '学号
mrcLine.Fields(3) = mrcOnline.Fields(3) '姓名
mrcLine.Fields(4) = mrcOnline.Fields(1) '系别
mrcLine.Fields(5) = mrcOnline.Fields(5) '性别
mrcLine.Fields(6) = mrcOnline.Fields(6) '上机日期
mrcLine.Fields(7) = mrcOnline.Fields(7) '上机时间
mrcLine.Fields(8) = Date '下机日期
mrcLine.Fields(9) = Time '下机时间
mrcLine.Fields(10) = ConsumeTime '消费时间
mrcLine.Fields(11) = Money '消费金额
mrcLine.Fields(12) = Balance '余额
mrcLine.Fields(13) = "正常下机"
mrcLine.Fields(14) = Trim(VBA.Environ("computername"))
mrcLine.Update
mrcStu.Update
MsgBox "下机成功", 64, "温馨提示"
mrcOnline.Delete
FrmMain.LblPeople.Caption = mrcOnline.RecordCount '显示当前上机人数
MSFlexGrid1.RemoveItem m
m = m - 1
Else
m = m - 1
End If
Next
' End If
End Sub