Sistema de carga de la sala de ordenadores ----- todo fuera de la máquina o seleccione fuera de la máquina y error 30015

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

 

Supongo que te gusta

Origin blog.csdn.net/weixin_44663188/article/details/108075299
Recomendado
Clasificación