frmMonth.frm
上传用户:djzm888
上传日期:2013-02-15
资源大小:867k
文件大小:18k
源码类别:

其他数据库

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{6B7E6392-850A-101B-AFC0-4210102A8DA7}#1.3#0"; "COMCTL32.OCX"
  3. Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "MSFLXGRD.OCX"
  4. Begin VB.Form frmMonth 
  5.    BorderStyle     =   3  'Fixed Dialog
  6.    Caption         =   "月统计报表"
  7.    ClientHeight    =   7320
  8.    ClientLeft      =   45
  9.    ClientTop       =   330
  10.    ClientWidth     =   10500
  11.    BeginProperty Font 
  12.       Name            =   "宋体"
  13.       Size            =   10.5
  14.       Charset         =   134
  15.       Weight          =   400
  16.       Underline       =   0   'False
  17.       Italic          =   0   'False
  18.       Strikethrough   =   0   'False
  19.    EndProperty
  20.    Icon            =   "frmMonth.frx":0000
  21.    LinkTopic       =   "Form1"
  22.    LockControls    =   -1  'True
  23.    MaxButton       =   0   'False
  24.    MinButton       =   0   'False
  25.    ScaleHeight     =   7320
  26.    ScaleWidth      =   10500
  27.    StartUpPosition =   1  '所有者中心
  28.    Begin ComctlLib.StatusBar stbMsg 
  29.       Align           =   2  'Align Bottom
  30.       Height          =   450
  31.       Left            =   0
  32.       TabIndex        =   14
  33.       Top             =   6870
  34.       Width           =   10500
  35.       _ExtentX        =   18521
  36.       _ExtentY        =   794
  37.       SimpleText      =   ""
  38.       _Version        =   327682
  39.       BeginProperty Panels {0713E89E-850A-101B-AFC0-4210102A8DA7} 
  40.          NumPanels       =   1
  41.          BeginProperty Panel1 {0713E89F-850A-101B-AFC0-4210102A8DA7} 
  42.             AutoSize        =   1
  43.             Object.Width           =   18468
  44.             Key             =   ""
  45.             Object.Tag             =   ""
  46.             Object.ToolTipText     =   "警告信息"
  47.          EndProperty
  48.       EndProperty
  49.       BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
  50.          Name            =   "宋体"
  51.          Size            =   12
  52.          Charset         =   134
  53.          Weight          =   400
  54.          Underline       =   0   'False
  55.          Italic          =   0   'False
  56.          Strikethrough   =   0   'False
  57.       EndProperty
  58.       MouseIcon       =   "frmMonth.frx":000C
  59.    End
  60.    Begin VB.CommandButton Command1 
  61.       Height          =   435
  62.       Index           =   0
  63.       Left            =   8955
  64.       Picture         =   "frmMonth.frx":0326
  65.       Style           =   1  'Graphical
  66.       TabIndex        =   13
  67.       Top             =   210
  68.       Width           =   1230
  69.    End
  70.    Begin VB.CommandButton Command1 
  71.       Height          =   435
  72.       Index           =   1
  73.       Left            =   8955
  74.       Picture         =   "frmMonth.frx":211A
  75.       Style           =   1  'Graphical
  76.       TabIndex        =   12
  77.       Top             =   757
  78.       Width           =   1230
  79.    End
  80.    Begin VB.CommandButton Command1 
  81.       Cancel          =   -1  'True
  82.       Height          =   435
  83.       Index           =   2
  84.       Left            =   8955
  85.       Picture         =   "frmMonth.frx":4085
  86.       Style           =   1  'Graphical
  87.       TabIndex        =   11
  88.       Top             =   1305
  89.       Width           =   1230
  90.    End
  91.    Begin VB.Frame Frame1 
  92.       Height          =   1650
  93.       Left            =   6075
  94.       TabIndex        =   4
  95.       Top             =   90
  96.       Width           =   2535
  97.       Begin VB.ComboBox cboMonth 
  98.          Height          =   330
  99.          Left            =   720
  100.          Style           =   2  'Dropdown List
  101.          TabIndex        =   16
  102.          Top             =   240
  103.          Width           =   1665
  104.       End
  105.       Begin VB.ComboBox cboDept 
  106.          Height          =   330
  107.          Left            =   720
  108.          Style           =   2  'Dropdown List
  109.          TabIndex        =   7
  110.          Top             =   697
  111.          Width           =   1665
  112.       End
  113.       Begin VB.TextBox txtEmp 
  114.          Height          =   330
  115.          Left            =   720
  116.          TabIndex        =   6
  117.          Top             =   1155
  118.          Width           =   1350
  119.       End
  120.       Begin VB.CommandButton Command2 
  121.          Caption         =   "…"
  122.          Height          =   330
  123.          Left            =   2070
  124.          TabIndex        =   5
  125.          Top             =   1155
  126.          Width           =   330
  127.       End
  128.       Begin VB.Label Label1 
  129.          AutoSize        =   -1  'True
  130.          Caption         =   "月份:"
  131.          Height          =   210
  132.          Index           =   0
  133.          Left            =   150
  134.          TabIndex        =   15
  135.          Top             =   300
  136.          Width           =   525
  137.       End
  138.       Begin VB.Label Label1 
  139.          AutoSize        =   -1  'True
  140.          Caption         =   "部门:"
  141.          Height          =   210
  142.          Index           =   2
  143.          Left            =   150
  144.          TabIndex        =   9
  145.          Top             =   757
  146.          Width           =   525
  147.       End
  148.       Begin VB.Label Label1 
  149.          AutoSize        =   -1  'True
  150.          Caption         =   "员工:"
  151.          Height          =   210
  152.          Index           =   3
  153.          Left            =   150
  154.          TabIndex        =   8
  155.          Top             =   1215
  156.          Width           =   525
  157.       End
  158.    End
  159.    Begin VB.Frame fra1 
  160.       Height          =   1650
  161.       Left            =   255
  162.       TabIndex        =   0
  163.       Top             =   90
  164.       Width           =   5610
  165.       Begin VB.OptionButton optKq 
  166.          Caption         =   "全部(包括以上两者)"
  167.          Height          =   270
  168.          Index           =   2
  169.          Left            =   180
  170.          TabIndex        =   3
  171.          Top             =   1200
  172.          Width           =   2190
  173.       End
  174.       Begin VB.OptionButton optKq 
  175.          Caption         =   "正常考勤(包括正常出勤,休息)"
  176.          Height          =   270
  177.          Index           =   1
  178.          Left            =   180
  179.          TabIndex        =   2
  180.          Top             =   765
  181.          Width           =   4005
  182.       End
  183.       Begin VB.OptionButton optKq 
  184.          Caption         =   "非正常考勤(包括请假,出差,有薪假期,旷工,迟到等)"
  185.          Height          =   270
  186.          Index           =   0
  187.          Left            =   180
  188.          TabIndex        =   1
  189.          Top             =   330
  190.          Value           =   -1  'True
  191.          Width           =   5130
  192.       End
  193.    End
  194.    Begin MSFlexGridLib.MSFlexGrid msfGrid 
  195.       Height          =   4635
  196.       Left            =   240
  197.       TabIndex        =   10
  198.       Top             =   1995
  199.       Width           =   9960
  200.       _ExtentX        =   17568
  201.       _ExtentY        =   8176
  202.       _Version        =   393216
  203.       FixedCols       =   0
  204.       AllowBigSelection=   0   'False
  205.       HighLight       =   2
  206.       ScrollBars      =   2
  207.       AllowUserResizing=   1
  208.    End
  209. End
  210. Attribute VB_Name = "frmMonth"
  211. Attribute VB_GlobalNameSpace = False
  212. Attribute VB_Creatable = False
  213. Attribute VB_PredeclaredId = True
  214. Attribute VB_Exposed = False
  215. Option Explicit
  216. Dim mSelQryName As String
  217. Const mFormatString = "^工号      |<姓 名     |<部 门      " _
  218.     & "|<日期      |<类型       |<备注                             "
  219. '*****optKq
  220. Const mABNORMAL = 0
  221. Const mNORMAL = 1
  222. Const mALL = 2
  223. '****msfGrid
  224. Const mWorkNo = 0
  225. Const mName = 1
  226. Const mDept = 2
  227. Const mDATE = 3
  228. Const mTYPE = 4
  229. Const mNote = 5
  230. Const mGridCols = 6
  231. 'Const
  232. 'Const mKUANGGONG = "旷工"
  233. Const mMonthStr = "月统计报表"
  234. Const mSTARTTIMESTR = "起始时间 "
  235. Const mENDTIMESTR = "截至时间 "
  236. Const mWHOLEDAYSTR = "整天"
  237. Const mTOSTR = "-"
  238. Const mINWORKSTR = "上班"
  239. Const mOUTWORKSTR = "下班"
  240. Const mMsg1 = "系统正在统计当中,请您休息一下..."
  241. Const mMsg2 = "统计完成,请您继续作您的工作!!"
  242. Const mMsg3 = "抱歉,统计未完成!"
  243. Const mMsg4 = "该记录被删除"
  244. Const mMsg5 = "没有生成排班表或排班表已被删除,统计不能进行!!!"
  245. Dim mSql As String
  246. Dim mRst As Recordset
  247. Private Sub Command1_Click(Index As Integer)
  248.     Select Case Index
  249.         Case 0
  250.             If Not CheckQryIsExist Then
  251.                 MsgBox cboMonth.Text & mMsg5, vbInformation, gTitle
  252.                 Exit Sub
  253.             End If
  254.             stbMsg.Panels(1).Text = mMsg1
  255.             Dim Fr As frmMsg
  256.             Set Fr = New frmMsg
  257.             Fr.Label1 = mMsg1
  258.             Fr.Show
  259.             Fr.Refresh
  260.             Me.Enabled = False
  261.             Me.MousePointer = 11
  262.             If FindPlan Then
  263.                 stbMsg.Panels(1).Text = mMsg2
  264.                 Me.Enabled = True
  265.                 Me.MousePointer = 0
  266.             End If
  267.             Unload Fr
  268.         Case 1
  269.             Dim tmpStr As String
  270.             If Trim(cboDept.Text) <> gALLDEPTNAME Then
  271.                 tmpStr = Trim(cboDept.Text)
  272.             End If
  273.             If Trim(txtEmp) <> Empty Then
  274.                 If tmpStr <> Empty Then
  275.                     tmpStr = tmpStr & "的员工"
  276.                 End If
  277.                 tmpStr = tmpStr & Trim(txtEmp)
  278.             End If
  279.             
  280.             If optKq(mNORMAL).Value Then
  281.                 tmpStr = tmpStr & "正常考勤"
  282.             End If
  283.             If optKq(mABNORMAL).Value Then
  284.                 tmpStr = tmpStr & "非正常考勤"
  285.             End If
  286.             If optKq(mALL).Value Then
  287.                 tmpStr = tmpStr & "全部考勤"
  288.             End If
  289.             tmpStr = tmpStr & "的记录"
  290.             
  291.             PrintGridNormal gOwnName & "-" & Me.Caption, _
  292.                 msfGrid, 1, tmpStr, True
  293.         Case 2
  294.             Unload Me
  295.     End Select
  296. End Sub
  297. Private Function CheckQryIsExist() As Boolean
  298.     Dim tmpTableName As String
  299.     tmpTableName = Right(Year(Date), 2) & Val(cboMonth.Text)
  300.     mSelQryName = gQRY & tmpTableName
  301.     If HasThisQuery(mSelQryName) Then
  302.         Me.Caption = Year(Date) & "年" _
  303.             & Format(Val(cboMonth.Text), _
  304.             "00") & "月  " & mMonthStr
  305.         CheckQryIsExist = True
  306.     Else
  307.         CheckQryIsExist = False
  308.     End If
  309. End Function
  310. Private Sub Command2_Click()
  311.     Dim Frm As frmLookMan
  312.     Set Frm = New frmLookMan
  313.     With Frm
  314.         .Show vbModal
  315.         txtEmp = .mWorkNo
  316.     End With
  317. End Sub
  318. Private Sub Form_Load()
  319.     SetGridColor msfGrid
  320.     msfGrid.FormatString = mFormatString
  321.     With cboMonth
  322.         .Clear
  323.         Dim I As Integer
  324.         For I = 1 To Month(Date)
  325.             .AddItem Format(I, "00") & " 月"
  326.         Next
  327.         .ListIndex = Month(Date) - 1
  328.     End With
  329.     With cboDept
  330.         .Clear
  331.         FillCbo cboDept, aDepartment, 0
  332.     End With
  333. 'gPlanTableName
  334. End Sub
  335. Private Function FindPlan() As Boolean
  336.     Dim intDeptID As Integer
  337.     Dim strWorkNo As String
  338.     Dim strDept As String
  339.     Dim WhereFlag As Boolean
  340.     Dim Str As String
  341.     Dim intRows As Integer
  342.     
  343.     'On Error GoTo FindErr
  344.     getItemData cboDept, intDeptID
  345.     strDept = Trim(cboDept.Text)
  346.     strWorkNo = Trim(txtEmp)
  347.     
  348.     mSql = "select * from " & mSelQryName 'gPlanQryName
  349.     If strWorkNo <> Empty Then
  350.         mSql = mSql & JoinSqlStr(strWorkNo, WhereFlag, "WorkNo", True)
  351.     End If
  352.     If intDeptID <> gMAXITEM Then mSql = mSql & JoinSqlStr(intDeptID, WhereFlag, "DeptID", False)
  353.     mSql = mSql & " order by WorkNo,F_Day"
  354.     Set mRst = gDataBase.OpenRecordset(mSql)
  355.     Dim IsContinue As Boolean
  356.     Dim IntShift As Integer
  357.     'Dim strWorkNo As String
  358.     Dim strDate As String
  359.     Dim strKqTime As String
  360.     Dim blnNormal As Boolean
  361.     Dim blnIsAll As Boolean
  362.     Dim blnIsNormal As Boolean
  363.     'Dim intRows As Long
  364.     blnIsAll = (optKq(mALL).Value = True)
  365.     blnIsNormal = (optKq(mNORMAL).Value = True)
  366.     
  367.     With mRst
  368.         While Not .EOF
  369.             IsContinue = True
  370.             IntShift = !ID
  371.             strWorkNo = Trim(!WorkNo)
  372.             strKqTime = Empty
  373.             strDate = Year(Date) & "-" _
  374.                 & Format(Month(Date), "00") & "-" _
  375.                 & Format(CStr(!F_Day), "00")
  376.                 
  377.             blnNormal = IsNormal(IntShift, strWorkNo, strDate, strKqTime)
  378.             If blnIsAll Then
  379.                 IsContinue = True
  380.             Else
  381.                 If blnIsNormal Then
  382.                     If Not blnNormal Then IsContinue = False
  383.                 Else
  384.                     If blnNormal Then IsContinue = False
  385.                 End If
  386.             End If
  387.             
  388.             If IsContinue Then
  389.                 intRows = intRows + 1
  390.                 Str = Str & strWorkNo & vbTab & _
  391.                     IIf(IsNull(!Name), "", Trim(!Name)) & vbTab
  392.                 intDeptID = !DeptID
  393.                 Str = Str & GetDept(intDeptID) & vbTab _
  394.                     & !F_Day & vbTab
  395.                     
  396.                 If blnIsAll Then
  397.                     If blnNormal Then
  398.                         GetNormalKq Str, IntShift, strKqTime
  399.                     Else
  400.                         GetAbNormal Str, IntShift, strKqTime, strDate, strWorkNo
  401.                     End If
  402.                 Else
  403.                     If blnIsNormal Then '正常
  404.                         GetNormalKq Str, IntShift, strKqTime
  405.                     Else '非正常
  406.                         GetAbNormal Str, IntShift, strKqTime, strDate, strWorkNo
  407.                     End If
  408.                 End If
  409.                 If Not .EOF Then Str = Str & vbCr
  410.             End If
  411.             .MoveNext
  412.         Wend
  413.     End With
  414.     intRows = intRows + msfGrid.FixedRows
  415.     ClipToGrid msfGrid, Str, intRows, mGridCols
  416.     With msfGrid
  417.         .MergeCells = flexMergeRestrictRows
  418.         .MergeCol(mWorkNo) = True
  419.         .MergeCol(mName) = True
  420.         .MergeCol(mDept) = True
  421.     End With
  422.     FindPlan = True
  423.     Exit Function
  424. FindErr:
  425.     MsgBox mMsg3 & vbCrLf & Err.Description, vbCritical, gTitle
  426.     stbMsg.Panels(1).Text = mMsg3
  427.     FindPlan = False
  428.     Err.Clear
  429.     Me.Enabled = True
  430.     Me.MousePointer = 0
  431. End Function
  432. Private Sub GetAbNormal(Str As String, IntShift As Integer, strKqTime As String, strDate As String, strWorkNo As String)
  433.     Select Case IntShift
  434.         Case gNOSHIFT '未排班
  435.             Str = Str & gNOSHIFTNAME & vbTab
  436.         Case GSHIFTLEAVEID, GSHIFTEVECTIONID, GSHIFTMONEYID
  437.             If IntShift = GSHIFTLEAVEID Then '请假
  438.                 Str = Str & GSHIFTLEAVESTR & vbTab
  439.                 GetNote Str, True, strDate, strWorkNo, False
  440.             Else
  441.                 If IntShift = GSHIFTEVECTIONID Then '出差
  442.                     Str = Str & GSHIFTEVECTIONSTR & vbTab
  443.                     GetNote Str, False, strDate, strWorkNo, True
  444.                 ElseIf IntShift = GSHIFTMONEYID Then '有薪假期
  445.                     Str = Str & GSHIFTMONEYSTR & vbTab
  446.                     GetNote Str, False, strDate, strWorkNo, False
  447.                 End If
  448.             End If
  449.         Case Else
  450.             If strKqTime <> Empty Then '迟到
  451.                 Str = Str & gWORKLATE & vbTab & strKqTime
  452.             Else '旷工
  453.                 Str = Str & gNOTINWORK & vbTab
  454.             End If
  455.     End Select
  456. End Sub
  457. Private Sub GetNote(Str As String, isLeave As Boolean, strDate As String, strWorkNo As String, isEvection As Boolean)
  458.     Dim Sql As String
  459.     Dim WhereFlag As Boolean
  460.     Sql = Sql & "select StartTime,EndTime,StartDate,EndDate from "
  461.     If isLeave Then
  462.         Sql = Sql & "Leave"
  463.         WhereFlag = False
  464.     Else
  465.         Sql = Sql & "Absent"
  466.         Sql = Sql & " Where IsEvection="
  467.         If isEvection Then
  468.             Sql = Sql & gTRUE
  469.         Else
  470.             Sql = Sql & gFALSE
  471.         End If
  472.         WhereFlag = True
  473.     End If
  474.     If WhereFlag Then
  475.         Sql = Sql & " and "
  476.     Else
  477.         Sql = Sql & " Where "
  478.     End If
  479.     Sql = Sql & " WorkNo='" & strWorkNo _
  480.         & "' and StartDate<='" & strDate _
  481.         & "' and EndDate>='" & strDate & "'" _
  482.         & " and F_DelFlag=" & gFALSE _
  483.         & " order by StartTime"
  484.     Dim Rst As Recordset
  485.     Set Rst = gDataBase.OpenRecordset(Sql, dbOpenSnapshot)
  486.     If Rst.RecordCount > 0 Then
  487.         With Rst
  488.             If strDate = Trim(!StartDate) And strDate = Trim(!EndDate) Then '在同一天之内
  489.                 Str = Str & mSTARTTIMESTR & Trim(!StartTime) _
  490.                     & Space(1) & mENDTIMESTR & Trim(!EndTime)
  491.             Else
  492.                 If strDate = Trim(!StartDate) Then '此天等于起始日期
  493.                     Str = Str & mSTARTTIMESTR & Trim(!StartTime) _
  494.                         & Space(1) & mTOSTR & Space(1) & mOUTWORKSTR
  495.                 ElseIf strDate = Trim(!EndDate) Then '此天等于截至日期
  496.                     Str = Str & mINWORKSTR & Space(1) _
  497.                         & mTOSTR & Space(1) & mENDTIMESTR & Trim(!EndTime)
  498.                 Else '当中
  499.                     Str = Str & mWHOLEDAYSTR
  500.                 End If
  501.             End If
  502.         End With
  503.     Else
  504.         Str = Str & mMsg4
  505.     End If
  506.     Rst.Close
  507.     Set Rst = Nothing
  508. End Sub
  509. Private Sub GetNormalKq(Str As String, IntShift As Integer, strKqTime As String)
  510.     If IntShift = GSHIFTRESTID Then '休息
  511.         Str = Str & GSHIFTRESTSTR & vbTab
  512.     Else '正常出勤
  513.         Str = Str & gNORMALKQSTR & vbTab & strKqTime
  514.     End If
  515. End Sub
  516. Private Function IsNormal(IntShift As Integer, strWorkNo As String, strDate As String, strKqTime As String) As Boolean
  517.     If IntShift = GSHIFTRESTID Then
  518.         IsNormal = True
  519.         Exit Function
  520.     Else
  521.         If IsNormalKq(IntShift, strWorkNo, strDate, strKqTime) Then
  522.             IsNormal = True
  523.             Exit Function
  524.         End If
  525.     End If
  526.     IsNormal = False
  527. End Function
  528. Private Function GetDept(intDeptID As Integer) As String
  529.     Dim I As Integer
  530.     For I = 0 To UBound(aDepartment)
  531.         With aDepartment(I)
  532.             If .ID = intDeptID Then
  533.                 GetDept = Trim(.Name)
  534.                 Exit Function
  535.             End If
  536.         End With
  537.     Next
  538.     GetDept = Empty
  539. End Function