La idea de seleccionar estudiantes sin conexión es relativamente simple. El siguiente es mi diagrama de flujo.
Visualización del fragmento de código:
De acuerdo con el diagrama de flujo, primero debemos seleccionar a los estudiantes que desean desmontar, por lo que en MSHFlexGrid1, seleccione una fila, esta fila debe cambiarse de color para distinguir si está seleccionada.
Private Sub MSHFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim col As Integer
If MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 5) = "??" Then '?判断是否选中这一行,没有选中,点击后即可选中
MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 5) = ""
For col = 0 To MSHFlexGrid1.Cols - 1 '从第0行到总列数
'恢复颜色为白色
MSHFlexGrid1.col = col
MSHFlexGrid1.CellBackColor = vbWhite
Next col
Else
MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 5) = "??"
'??????
For col = 0 To MSHFlexGrid1.Cols - 1
MSHFlexGrid1.col = col
MSHFlexGrid1.CellBackColor = &HFFFF00
Next col
End If
Si se selecciona una determinada fila, el botón "estudiantes seleccionados para desembarcar" está disponible, de lo contrario no está disponible
If MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 5) = "√" Then
SelStuOffline.Enabled = True
Else
SelStuOffline.Enabled = False
End If
Seleccione el código fuera de la máquina del estudiante
Private Sub SelStuOffline_Click () 'Seleccione el estudiante fuera de línea
Dim sz (999) As String' La matriz utilizada para almacenar la ID del estudiante de la verificación de código
Dim xh (999) As
String 'El número de línea utilizado para almacenar la verificación de código Dim txtCash As String 'Balance
Dim consume As
String ' Almacene la cantidad de consumo Dim consumtime As String 'Almacene el tiempo total
Dim z As Integer Almacene la variable
Dim i As Integer usada para el número de estudiante con la marca de verificación' Variable
Dim s As Integer llamado al cambiar el color ' El número de variable se almacena con una verificación de la línea utilizada
Dim j como Integer 'número de línea
Dim t' time
Dim bob as Boolean 'La bandera se usa para mostrar todos los clics de botón, y el comienzo predeterminado es falso
Dim txtSQL de como String
Dim txtSQL1 de como String
Dim Msgtext As String
Dim OnLine
As ADODB.Recordset 'Conectarse a la tabla de estudiantes Dim mrc1 As ADODB.Recordset'En nombre de la mesa en línea hay un límite de tiempo
Línea atenuada como ADODB.
BAS de As ADODB.Recordset Dim
Dim STU de As ADODB.Recordset
Dim MRC2 de As ADODB.Recordset
Con MSHFlexGrid1
el If = 0 .RowSel the Then
MsgBox "Por favor, seleccione la tarjeta para la siguiente máquina", vbOKOnly + vbExclamation, "prompt"
Else
'es seleccionado por la máquina de grabación Agregue una marca de verificación en la última línea y almacene toda la información del número de tarjeta de estos registros en la matriz sz
i = 0 'La primera de la matriz es 0
For j = 1 To .Rows-1
If .TextMatrix (j, 5 ) = "√"
Entonces ' Registre el número de línea con la marca de verificación sz (i) = .TextMatrix (j, 0)' Guarde los datos del número de tarjeta en la matriz sz
xh (i) = Val (j) 'Guarde el número de línea en
i = i + 1
End If
Next j
For z = 0 To i-1 en la matriz xh
txtSQL = "seleccionar * de BasicData_info"
Establecer bas = ExecuteSQL (txtSQL, Msgtext)
txtSQL = "seleccionar * de student_info donde cardno = '" & sz (z) & "' y estado = '" & "使用" & "'"
Establecer stu = ExecuteSQL (txtSQL, Msgtext)
txtSQL = "select * from OnLine_info donde cardno = '" & sz (z) & "'"
Establecer OnLine = ExecuteSQL (txtSQL, Msgtext)
consumtime = DateDiff ("n", Trim (OnLine) ! Fecha), Ahora) '计算 消费 金额
Si Val (tiempo de consumo) <= Val (bas! Tiempo de preparación) Entonces'El tiempo de consumo es menor que el tiempo mínimo prescrito y la cantidad de consumo es 0.
consume = 0
Else
If Val (tiempo de consumo) Mod Val (bas! UnitTime) = 0 Entonces 'Calcule el tiempo de consumo
t = Int (consumtime / bas! unitTime)
Else
t = Int (consumtime / bas! unitTime) + 1
End If
If stu.EOF Then
MsgBox "Este número de tarjeta no está registrado o ha sido reembolsado", vbOKOnly + vbExclamation, "Prompt"
Exit Sub
Else 'Juzgando
si es un usuario fijo o un usuario temporal
Si Trim (stu! Type) = Trim ("usuario fijo") Entonces
consume = t * bas.Fields (0)
Else
consume = t * bas.Fields (1)
End If
Terminara si
End If
txtCash = Val (stu! Cash) - consume '计算 余额
' 更新 línea 表
txtSQL = "select * from Line_info donde cardno = '" & sz (z) & "' y ondate = '" & OnLine! OnDate & " 'and ontime =' "& OnLine! OnTime &" '"
Establecer mrc1 = ExecuteSQL (txtSQL, Msgtext)
mrc1.Fields (1) = sz (z)
mrc1.Fields (2) = Trim (stu.Fields (1))
mrc1.Fields (3) = Trim (stu.Fields (2))
mrc1.Fields (4) = Trim (stu.Fields (4))
mrc1.Fields (5) = Trim (stu.Fields (3))
mrc1. Campos (6) = Recortar (est.Campos (6))
mrc1.Fields (7) = Recortar (est. Campos (7))
mrc1.Fields (10) = tiempo de consumo
mrc1.Fields (11) = consumir
mrc1.Fields (12) = Val (txtCash)
mrc1.Fields (13) = "正常 下 机"
mrc1.Fields (14) = GetThisComputerName
mrc1.Fields (8) = Fecha
mrc1.Fields (9) = Hora
stu.Close
OnLine.Close
'更新 学生 表
txtSQL = "select * from student_info donde cardno ='" & Trim (sz (z)) & "'"
Set mrc2 = ExecuteSQL (txtSQL, Msgtext)
mrc2.Fields (7) = txtCash
mrc2.Update
'更新 online 表
txtSQL1 = "eliminar de OnLine_Info donde cardno = '" & Trim (sz (z)) & "'"
Establecer OnLine = ExecuteSQL (txtSQL1, Msgtext)
Siguiente z
'更新 msflexgrid1 界面
For s = 0 To i - 1
If .Rows> 2 Entonces
.RemoveItem xh (s)
Else
.Clear
.Enabled = False
End If
Next s
End If
End With
End Sub