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

📄 frmviewclass.frm

📁 考勤机管理软件,用于统计某段时间某个部门或者某个员工在某段内迟到与早退次数.
💻 FRM
📖 第 1 页 / 共 2 页
字号:
                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
    
    
    
    
    con.BeginTrans
    i = 1
    con.Execute "delete from SetClass where AddClass=false"
    con.Execute "update Employee set ClassFlag=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(" & rstGrid.Fields("EmployeeID") & ","
            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
            
            SQL = "update Employee set ClassFlag=1 where EmployeeID= " & rstGrid.Fields("EmployeeID")
            
            Debug.Print SQL
            con.Execute SQL
            
            rstGrid.MoveNext
        Loop

    End If
    con.CommitTrans
    i = 2
    
    m_Changed = False
    SaveBill = True
    Grid.AllowEdit = False
    Grid.Refresh

'    Message "保存成功!"
    Exit Function
    
SaveErr:
    If i = 1 Then con.RollbackTrans
    Message Err.Description

End Function


Public Sub AddRow()
    If Grid.RecordCount = 0 Then
        Message "没有可用信息!"
        Exit Sub
    End If
    
    If Grid.CurRow = -1 Then
        Message "请先选中数据!"
        Exit Sub
    End If
    
    Dim sName As String
    sName = Grid.Field("EmployeeName")
    
    Dim sID As Long
    sID = Grid.Field("EmployeeID")
    
    Grid.InsertRow Grid.CurRow
    rstGrid!EmployeeName = sName
    rstGrid!EmployeeID = sID
    
    
    Grid.RefreshCurRow
End Sub

Public Sub DelRow()
    If Grid.RecordCount = 0 Then
        Message "没有可用信息!"
        Exit Sub
    End If
    
    If Grid.CurRow = -1 Then
        Message "请先选中数据!"
        Exit Sub
    End If
    
    Grid.Delete
    m_Changed = True
End Sub


Private Sub cmdSave_Click()
    If SaveBill = False Then Exit Sub
End Sub

Private Sub Form_Load()
    Me.Icon = MDI.Icon
    Me.Caption = "排班登记"

    Dim SQL As String
    
'    SQL = " select a.EmployeeID, b.name as EmployeeName,a.timemode,a.classid," _
'        & "a.Begintime ,a.Endtime ,c.ClassName ,a.Memo1  from setclass a " _
'        & "left outer join employee b on a.employeeid=b.employeeid " _
'        & "left outer join class c on a.classid=c.classid "


    SQL = "select a.EmployeeID, b.name as EmployeeName," _
        & " a.BeginDate,a.EndDate,a.timemode,a.Begintime ,a.Endtime ,a.classid,c.ClassName ,a.AddClass,a.Memo1  from setclass a ,employee b,class c" _
        & " where a.AddClass=false and a.employeeid=b.employeeid and  a.classid=c.classid"

    Debug.Print SQL
    
    If rstGrid.State = 1 Then
        rstGrid.Close
        Set rstGrid = Nothing
    End If
    
    rstGrid.CursorLocation = adUseClient
    rstGrid.Open SQL, con, adOpenStatic, adLockBatchOptimistic
    
    Grid.AddHeader "序号", "Serial", 40, -1, "Serial", False, sSerial
    Grid.AddHeader "员工编号", "EmployeeID", 120, -1, "EmployeeID", False, sDefault
    Grid.AddHeader "员工名称", "EmployeeName", 120, -1, "EmployeeName", 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, -1, "ClassName", False, sDefault
    Grid.AddHeader "备注", "Memo1", 120, -1, "Memo1", False, sDefault
    
    Set Grid.DataSource = rstGrid
    Grid.GroupCol = 2
    
'    Grid.Col("EmployeeID").Visible = False
'    Grid.Col("EmployeeName").Visible = False
'    Grid.Col("Serial").SumText = "合计"
'    Grid.Col("serial").FixType = sLeftPos
    
    cmbClass.ShowHeadScale = "0,20"
    cmbClass.ShowHeadValue = "ClassID,名称"
    cmbClass.ShowIndex = 1
    cmbClass.Type = tStatic
    cmbClass.SetBtns "刷新"
    cmbClass.ButtonHeight = 20
    cmbClass.DropWidth = cmbClass.Width \ 15
    cmbClass.DataSource = bufClass
    
    cmbTimeMode.ShowHeadScale = "0,20"
    cmbTimeMode.ShowHeadValue = "DataID,时间模式"
    cmbTimeMode.ShowIndex = 1
    cmbTimeMode.Type = tNormal
    cmbTimeMode.DropWidth = cmbTimeMode.Width \ 15
    
    cmbTimeMode.AddString "每天" + vbLf
    cmbTimeMode.AddString "每周" + vbLf
    cmbTimeMode.AddString "每月" + vbLf
'    cmbTimeMode.SetItemData 1, 1

    
    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.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
    
''    Grid.EditHwnd(ComboTree) = cbm
    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.Col("EmployeeID").Visible = False
    Grid.Col("EmployeeName").Visible = False

    Grid.AllowAddNew = False
    Grid.AllowEdit = False
'    Grid.MainCol = "TimeMode"

    m_Changed = False
    
End Sub

Public Sub RefreshGrid()
    rstGrid.Requery
    Grid.ReFetch
'    Grid.Refresh
End Sub

Private Sub cmdClose_Click()
    m_Changed = False
    Unload Me
End Sub

Private Sub cmdSetClass_Click()
    If ChangedMsg = False Then Exit Sub
    frmViewClassBatchEdit.ZOrder
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
    
    Grid.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight - cmdClose.Height - 100
    cmdClose.Move Me.ScaleWidth - cmdClose.Width - 60, Grid.Top + Grid.Height + 60
    
    
    
'    cmdRefresh.Move cmdClose.Left - cmdRefresh.Width - 60, cmdClose.Top

    
    cmdSetClass.Move cmdClose.Left - cmdSetClass.Width - 60, cmdClose.Top
    cmdSave.Move cmdSetClass.Left - cmdSave.Width - 60, cmdSetClass.Top

    cmdEdit.Move cmdSave.Left - cmdEdit.Width - 60, cmdSave.Top

    cmdAdd.Move cmdEdit.Left - cmdAdd.Width - 60, cmdEdit.Top
    
    
    
    
'    cmdRefresh.Move cmdClose.Left - cmdRefresh.Width - 60, cmdClose.Top

    
'    cmdSetClass.Move cmdRefresh.Left - cmdSetClass.Width - 60, cmdRefresh.Top
'    cmdSave.Move cmdSetClass.Left - cmdSave.Width - 60, cmdSetClass.Top
'
'    cmdEdit.Move cmdSave.Left - cmdEdit.Width - 60, cmdSave.Top
'
'    cmdAdd.Move cmdEdit.Left - cmdAdd.Width - 60, cmdEdit.Top
End Sub

Private Sub Form_Unload(Cancel As Integer)
    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("TimeMode") = cmbTimeMode.Text
        rstGrid.Update
        Grid.RefreshNew
    End If
    m_Changed = True
End Sub



Private Sub Grid_BeforeColUpdate(ByVal ColIndex As Long, ByVal OldValue As String, Cancel As SSUPERGRIDLib.sBool)
'    If Grid.Col("timemodename").ColIndex = ColIndex Then
'        Cancel = True
'        'rstGrid!timemodename = cmbTimeMode.Text
'        Dim lSel As Long
'        lSel = cmbTimeMode.GetCurSel
'        rstGrid!TimeMode = cmbTimeMode.GetItemData(lSel)
'        rstGrid.Update
'        Grid.RefreshCurRow
'    End If
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 Not Grid.AllowEdit Then Exit Sub
    If Area = sRowArea Or sBlankArea Then
        Set iFrom = Me
        Me.PopupMenu MNU.mnuSetClass
    End If
End Sub

⌨️ 快捷键说明

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