⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmviewclassbatchedit.frm

📁 考勤机管理软件,用于统计某段时间某个部门或者某个员工在某段内迟到与早退次数.
💻 FRM
📖 第 1 页 / 共 2 页
字号:
'    cmbTimeMode.SetItemData 1, 1
    
'    cmbTimeMode.SetItemData 2, 2
'
    cmbWeek.ShowHeadScale = "0,20"
    cmbWeek.ShowHeadValue = "DataID,星期几"
    cmbWeek.ShowIndex = 1
    cmbWeek.Type = tNormal
    cmbWeek.DropWidth = cmbTimeMode.Width \ 15
    
    Dim iWeek As Integer
    For iWeek = 1 To 7
        cmbWeek.AddString CStr(iWeek) + vbLf
    Next
    
    cmbMonth.ShowHeadScale = "0,20"
    cmbMonth.ShowHeadValue = "DataID,日"
    cmbMonth.ShowIndex = 1
    cmbMonth.Type = tNormal
    cmbMonth.DropWidth = cmbTimeMode.Width \ 15
    
    Dim iMonth As Integer
    For iMonth = 1 To 31
        cmbMonth.AddString CStr(iMonth) + vbLf
    Next
    

    


    


'    Grid.MainCol = "TimeMode"
    
    
    
    
    
    
    
    
    
    
    Grid.AddBuf bufClass, -1, "ClassID"
    'Grid.AddBuf bufEmployee, -1, "Employeeid"
    
    Grid.AddHeader "序号", "Serial", 60, -1, "Serial", False, sSerial
    'Grid.AddHeader "员工", "EmployeeName", 120, 1, "Name", False, sDefault
    Grid.AddHeader "开始日期", "BeginDate", 120, -1, "BeginDate", False, sDefault
    Grid.AddHeader "结束日期", "EndDate", 120, -1, "EndDate", False, sDefault
    
    
    Grid.AddHeader "时间模式", "TimeMode", 120, -1, "TimeMode", False, sDefault
    Grid.AddHeader "开始时间", "BeginTime", 120, -1, "BeginTime", False, sDefault
    Grid.AddHeader "结束时间", "EndTime", 120, -1, "EndTime", False, sDefault
    Grid.AddHeader "班次", "ClassName", 120, 0, "ClassName", False, sDefault
    Grid.AddHeader "备注", "Memo1", 120, -1, "Memo1", False, sDefault
    
'    Grid.Col("TimeMode").EditType = TextBox
'    Grid.Col("BeginTime").EditType = TextBox
'    Grid.Col("EndTime").EditType = TextBox
'    Grid.Col("ClassName").EditType = ComboBox
'    Grid.Col("Memo").EditType = TextBox

    

    
'    Grid.EditHwnd(ComboBox) = cmbClass.hWnd
'    Grid.EditHwnd(TextBox) = txt.hWnd
    Grid.EditHwnd(ComboBox) = cmbClass.hWnd
    Grid.EditHwnd(ComboBox2) = cmbTimeMode.hWnd
    Grid.EditHwnd(ComboBox3) = cmbWeek.hWnd
    Grid.EditHwnd(ComboBox4) = cmbMonth.hWnd
    Grid.EditHwnd(DTPicker) = dtpTime.hWnd
    Grid.EditHwnd(TextBox) = txt.hWnd
    
'    cmbClass.RelateHwnd = Grid.hWnd
'    txt.RelateHwnd = Grid.hWnd

    cmbTimeMode.RelateHwnd = Grid.hWnd
    cmbClass.RelateHwnd = Grid.hWnd
    cmbWeek.RelateHwnd = Grid.hWnd
    cmbMonth.RelateHwnd = Grid.hWnd
    txt.RelateHwnd = Grid.hWnd
    dtpTime.RelateHwnd = Grid.hWnd
    
    Grid.Col("BeginDate").EditType = DTPicker
    Grid.Col("EndDate").EditType = DTPicker
    
    Grid.Col("ClassName").EditType = ComboBox
    Grid.Col("TimeMode").EditType = ComboBox2
'    Grid.Col("BeginTime").EditType = DTPicker
'    Grid.Col("EndTime").EditType = DTPicker
    Grid.Col("Memo1").EditType = TextBox
    
    Grid.AllowAddNew = True
    Grid.AllowEdit = True
    Grid.ColAutoResize = True
    Grid.MainCol = "BeginDate"
    
    Set Grid.DataSource = rstGrid
    
    optAdd = True
    m_Changed = False
End Sub


Public Function SaveBill() As Boolean
On Error GoTo SaveErr:
    Dim i As Integer, j As Integer, intKey As Integer
    Dim SQL  As String
    
    If rstGrid.RecordCount > 0 Then
        rstGrid.MoveFirst
        While Not rstGrid.EOF
            If Trim(rstGrid.Fields("BeginDate")) = "" _
                Or IsNull(rstGrid.Fields("BeginDate")) Then
                Message "请选择开始日期!"
                Exit Function
            End If
            If Trim(rstGrid.Fields("EndDate")) = "" _
                Or IsNull(rstGrid.Fields("EndDate")) Then
                Message "请选择结束日期!"
                Exit Function
            End If
            If CDate(rstGrid.Fields("BeginDate")) > CDate(rstGrid.Fields("EndDate")) Then
                    Message "结束日期不能比开始日期早!"
                    Exit Function
            End If
            If Trim(rstGrid.Fields("TimeMode")) = "" _
                Or IsNull(rstGrid.Fields("TimeMode")) Then
            
                Message "请选择时间模式!"
                Exit Function
            End If
            If Trim(rstGrid.Fields("TimeMode")) <> "每天" Then
                If Trim(rstGrid.Fields("BeginTime")) = "" _
                    Or IsNull(rstGrid.Fields("BeginTime")) Then
                    Message "选择开始时间!"
                    Exit Function
                End If
                If Trim(rstGrid.Fields("EndTime")) = "" _
                    Or IsNull(rstGrid.Fields("EndTime")) Then
                    Message "选择结束时间!"
                    Exit Function
                End If
                If Val(rstGrid.Fields("BeginTime")) > Val(rstGrid.Fields("EndTime")) Then
                    Message "结束时间不能比开始时间早!"
                    Exit Function
                End If
            End If
            If Trim(rstGrid.Fields("ClassID")) = "" _
                Or IsNull(rstGrid.Fields("ClassID")) Then
                Message "请选择班次!"
                Exit Function
            End If

            rstGrid.MoveNext
        Wend
    End If
    
    
    
    If lvwEmployee.ListItems.Count > 0 Then
    
        con.BeginTrans
        j = 1
        
        For i = 1 To lvwEmployee.ListItems.Count
            If lvwEmployee.ListItems.Item(i).Checked Then
                intKey = Val(Left(lvwEmployee.ListItems.Item(i).Key, Len(lvwEmployee.ListItems.Item(i).Key) - 1))
                
                If optCover = True Then con.Execute "delete from SetClass where EmployeeID=" & intKey & "and AddClass=0"
                
                If rstGrid.RecordCount > 0 Then
                    rstGrid.MoveFirst
                    Do While Not rstGrid.EOF
                        
                        SQL = "Insert Into setclass (EmployeeID,BeginDate,EndDate,timemode,begintime,endtime,classid,memo1,AddClass) "
                        SQL = SQL & " Values (' " & CStr(intKey)
                        SQL = SQL & "','" & rstGrid.Fields("BeginDate")
                        SQL = SQL & "','" & rstGrid.Fields("EndDate")
                        SQL = SQL & "','" & rstGrid.Fields("TimeMode")
                        SQL = SQL & "','" & rstGrid.Fields("BeginTime")
                        SQL = SQL & "','" & rstGrid.Fields("EndTime")
                        SQL = SQL & "','" & rstGrid.Fields("classid")
                        SQL = SQL & "','" & rstGrid.Fields("Memo1")
                        SQL = SQL & "'," & CStr(0) & " )"
                        Debug.Print SQL
                        
                        con.Execute SQL
                        
                        rstGrid.MoveNext
                    Loop
                    con.Execute "update Employee set ClassFlag=1 where EmployeeID=" & intKey
                Else
                    con.Execute "update Employee set ClassFlag=0 where EmployeeID=" & intKey
                End If
                
            End If
        Next
        
        
        j = 2
        
        If intKey = 0 Then
            Message "请先选择员工!"
            Exit Function
        End If
        
    Else
        Message "没有可选员工!"
        Exit Function
    End If
    
    con.CommitTrans
    SaveBill = True
    
    If FindWindow("frmViewClass") = True Then frmViewClass.RefreshGrid
'    Message "保存成功!"
    m_Changed = False
    Unload Me
    Exit Function
    
SaveErr:
    If j = 1 Then con.RollbackTrans
    Message Err.Description


End Function

Private Sub cmdSave_Click()
    SaveBill
    
End Sub

Private Sub cmbClass_Selected()
    rstGrid.Fields("classid") = cmbClass.ID
    rstGrid.Update
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Dim i As Integer
    If m_Changed = True Then
        i = MsgBox("记录已更改,是否保存!", vbInformation + vbYesNoCancel, "询问")
        If i = vbYes Then
            If SaveBill = False Then Cancel = 1
        ElseIf i = vbNo Then
            Cancel = 0
        Else
            Cancel = 1
        End If
    End If
End Sub

Private Sub Form_Resize()
On Error Resume Next
    lvwEmployee.Move 0, 0, Me.ScaleWidth * (2 / 10), Me.ScaleHeight - cmdSave.Height - 100
    Grid.Move lvwEmployee.Left + lvwEmployee.Width, 0, Me.ScaleWidth * (8 / 10), Me.ScaleHeight - cmdSave.Height - 100
    cmdClose.Move Me.ScaleWidth - cmdClose.Width - 60, Grid.Top + Grid.Height + 60
    cmdSave.Move cmdClose.Left - cmdSave.Width - 60, cmdClose.Top
    optCover.Move cmdSave.Left - optCover.Width - 60, cmdSave.Top
    optAdd.Move optCover.Left - optCover.Width - 60, optCover.Top
    
End Sub

Private Sub Form_Unload(Cancel As Integer)

    If rstExec.State = 1 Then rstExec.Close
    Set rstExec = Nothing
    
    If rstGrid.State = 1 Then rstGrid.Close
    Set rstGrid = Nothing
    
End Sub

Private Sub Grid_AfterColEdit(ByVal ColIndex As Long)
    If Grid.IsInNewRow Then
        rstGrid.AddNew
        rstGrid.Fields("BeginDate") = Format(dtpTime.Value, "yyyy-mm-dd")
        rstGrid.Update
        Grid.RefreshNew
    End If
    m_Changed = True
End Sub

Public Sub DelRecord()
    Grid.Delete
End Sub


Private Sub Grid_BeforeRowChange(ByVal NewRow As Long, Cancel As Long)
On Error Resume Next
    If Grid.FieldByKey(NewRow, "TimeMode") = "每周" Then
        Grid.Col("BeginTime").EditType = ComboBox3
        Grid.Col("EndTime").EditType = ComboBox3
        
    ElseIf Grid.FieldByKey(NewRow, "TimeMode") = "每月" Then
        Grid.Col("BeginTime").EditType = ComboBox4
        Grid.Col("EndTime").EditType = ComboBox4

    ElseIf Grid.FieldByKey(NewRow, "TimeMode") = "每天" Then
        Grid.Col("BeginTime").EditType = OtherHwnd
        Grid.Col("EndTime").EditType = OtherHwnd
    End If
End Sub

Private Sub Grid_RButtonUp(ByVal Area As SSUPERGRIDLib.sArea, ByVal X As Long, ByVal Y As Long)
    If Area <> sRowArea Then Exit Sub
    Set iFrom = Me
    MNU.PopupMenu MNU.mnuClassEdit
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -