Bez popisu
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

人員考勤明細表.vb 27KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. Option Strict Off
  2. Public Class 人員考勤明細表
  3. ReadOnly ds As New DataSet : ReadOnly ds1 As New DataSet : ReadOnly ds2 As New DataSet
  4. Dim 編號 As String
  5. ReadOnly T2 As String
  6. Private Sub Set_考勤明細()
  7. 月清單_DGV.DataSource = Nothing : ds.Clear()
  8. 月清單_DGV.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  9. 月清單_DGV.ColumnHeadersHeight = 25
  10. 月清單_DGV.AllowUserToAddRows = False
  11. ConnOpen()
  12. SQL1 = "SELECT 萬年曆.日期, 萬年曆.星期, QQ.請假類別, AA.事由, AA.是否生效, AA.核准人, AA.核准日期, QQ.上午上班, QQ.上午上班 AS 上午下班, QQ.上午上班 AS 上午工時, QQ.下午下班 AS 下午上班,
  13. QQ.下午下班, QQ.下午下班 AS 下午工時, QQ.下午下班 AS 整日工時, BB.上午補登, BB.下午補登, BB.公出事由, QQ.員工編號
  14. FROM 萬年曆 LEFT OUTER JOIN
  15. (SELECT 員工編號, 日期, 請假類別, 事由, 是否生效, 核准人, 核准日期
  16. FROM 人事請假單
  17. WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 LIKE '" & ComboBox1.Text & "/" & ComboBox2.Text & "%')) AS AA ON 萬年曆.日期 = AA.日期
  18. LEFT OUTER JOIN
  19. (SELECT 員工編號, 日期, 請假類別, 上午上班, 下午下班
  20. FROM 人事考勤明細表
  21. WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 LIKE '" & ComboBox1.Text & "/" & ComboBox2.Text & "%')) AS QQ ON 萬年曆.日期 = QQ.日期
  22. LEFT OUTER JOIN
  23. (SELECT 員工編號, 日期, 上午補登, 下午補登, 公出事由
  24. FROM 人事漏打卡補登紀錄
  25. WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 LIKE '" & ComboBox1.Text & "/" & ComboBox2.Text & "%')) AS BB ON 萬年曆.日期 = BB.日期
  26. WHERE (萬年曆.日期 LIKE '" & ComboBox1.Text & "/" & ComboBox2.Text & "%') ORDER BY 萬年曆.日期"
  27. CmdSet_For_DGV() : da.Fill(ds) : 月清單_DGV.DataSource = ds.Tables(0) : conn.Close() : Set_grid()
  28. End Sub
  29. Private Sub Set_grid()
  30. 月清單_DGV.Columns(0).FillWeight = 85 : 月清單_DGV.Columns(1).FillWeight = 60 : 月清單_DGV.Columns(2).FillWeight = 90 : 月清單_DGV.Columns(3).FillWeight = 262
  31. 月清單_DGV.Columns(4).FillWeight = 80 : 月清單_DGV.Columns(5).FillWeight = 65 : 月清單_DGV.Columns(6).FillWeight = 90 : 月清單_DGV.Columns(7).FillWeight = 75
  32. 月清單_DGV.Columns(8).FillWeight = 75 : 月清單_DGV.Columns(9).FillWeight = 80 : 月清單_DGV.Columns(10).FillWeight = 75 : 月清單_DGV.Columns(11).FillWeight = 75
  33. 月清單_DGV.Columns(12).FillWeight = 80 : 月清單_DGV.Columns(13).FillWeight = 90 : 月清單_DGV.Columns(14).FillWeight = 70 : 月清單_DGV.Columns(15).FillWeight = 70
  34. 月清單_DGV.Columns(16).FillWeight = 262 : 月清單_DGV.Columns(17).Visible = False
  35. Dim T, S, F, M, T1, S1, TT, SS, FF, MM, TT1, SS1, TTT, SSS, FFF, MMM, TTT1, SSS1 As Integer
  36. Dim S2, F2, M2, TT2, SS2, FF2, MM2, TTT2, SSS2, FFF2, MMM2 As String
  37. Dim 正常時1, 加班時1, 加班時2, 假常時1, 假加時1, 上午, 下午, 漏打 As Integer
  38. TextBox5.Text = "0" : TextBox6.Text = "0" : TextBox7.Text = "0" : TextBox8.Text = "0" : TextBox16.Text = "0" : TextBox9.Text = "0" : TextBox19.Text = "0" : 當月平日天_tb.Text = "0"
  39. 當月假日天_tb.Text = "0" : 當月平日上班時_tb.Text = "0" : 當月平日一段_tb.Text = "0" : 一段假日加_tb.Text = "0" : 二段假日加_tb.Text = "0"
  40. For i As Integer = 0 To 月清單_DGV.Rows.Count - 1
  41. 資料數 = 月清單_DGV.Rows.Count : MyModule1.進度條()
  42. '---------總上班計算-----------------------------------------------------------------------------------------------------------------------------
  43. Dim QASW As Integer = 0
  44. If 月清單_DGV.Rows(i).Cells("上午上班").Value.ToString <> "" Then
  45. 月清單_DGV.Rows(i).Cells("上午下班").Value = "12:00:00"
  46. Dim TSFM As Integer = DateDiff("s", 月清單_DGV.Rows(i).Cells("上午上班").Value.ToString, 月清單_DGV.Rows(i).Cells("上午下班").Value)
  47. T = TSFM \ 86400 : T1 = TSFM Mod 86400 : S = T1 \ 3600 : S1 = T1 Mod 3600 : F = S1 \ 60 : M = S1 Mod 60
  48. S2 = T * 24 + S & "時" : F2 = F & "分" : M2 = M & "秒"
  49. 月清單_DGV.Rows(i).Cells("上午工時").Value = T2 & S2 & F2 & M2
  50. QASW += TSFM : 上午 += TSFM
  51. End If
  52. If 月清單_DGV.Rows(i).Cells("下午下班").Value.ToString <> "" Then
  53. 月清單_DGV.Rows(i).Cells("下午上班").Value = "13:00:00"
  54. Dim TSFM As Integer = DateDiff("s", 月清單_DGV.Rows(i).Cells("下午上班").Value.ToString, 月清單_DGV.Rows(i).Cells("下午下班").Value)
  55. If TSFM > 23400 Then
  56. TSFM -= 5400
  57. End If
  58. T = TSFM \ 86400 : T1 = TSFM Mod 86400 : S = T1 \ 3600 : S1 = T1 Mod 3600 : F = S1 \ 60 : M = S1 Mod 60
  59. S2 = T * 24 + S & "時" : F2 = F & "分" : M2 = M & "秒"
  60. 月清單_DGV.Rows(i).Cells("下午工時").Value = T2 & S2 & F2 & M2
  61. QASW += TSFM : 下午 += TSFM
  62. End If
  63. If QASW = 0 Then : Else
  64. T = QASW \ 86400 : T1 = QASW Mod 86400 : S = T1 \ 3600 : S1 = T1 Mod 3600 : F = S1 \ 60 : M = S1 Mod 60
  65. S2 = T * 24 + S & "時" : F2 = F & "分" : M2 = M & "秒"
  66. 月清單_DGV.Rows(i).Cells("整日工時").Value = T2 & S2 & F2 & M2
  67. End If
  68. If 月清單_DGV.Rows(i).Cells("日期").Value < Today() Then
  69. If 月清單_DGV.Rows(i).Cells("星期").Value.ToString = "星期日" Or 月清單_DGV.Rows(i).Cells("星期").Value.ToString = "星期六" Then
  70. ElseIf 月清單_DGV.Rows(i).Cells("請假類別").Value.ToString <> "" Then
  71. Else
  72. If 月清單_DGV.Rows(i).Cells("日期").Value >= 入職日期_dtp.Value Then
  73. If 月清單_DGV.Rows(i).Cells("上午上班").Value.ToString = "" Then : 漏打 += 1 : End If
  74. If 月清單_DGV.Rows(i).Cells("下午下班").Value.ToString = "" Then : 漏打 += 1 : End If
  75. End If
  76. End If
  77. End If
  78. If 月清單_DGV.Rows(i).Cells("上午補登").Value.ToString = "1" Then : 漏打 += 1 : End If
  79. If 月清單_DGV.Rows(i).Cells("下午補登").Value.ToString = "1" Then : 漏打 += 1 : End If
  80. TextBox4.Text = 漏打
  81. If 月清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "育嬰假一天" Then : TextBox5.Text = Val(TextBox5.Text) + 1
  82. ElseIf 月清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "育嬰假半天" Then : TextBox5.Text = Val(TextBox5.Text) + 0.5
  83. End If
  84. If 月清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "事假一天" Then : TextBox6.Text = Val(TextBox6.Text) + 1
  85. ElseIf 月清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "事假半天" Then : TextBox6.Text = Val(TextBox6.Text) + 0.5
  86. End If
  87. If 月清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "病假一天" Then : TextBox7.Text = Val(TextBox7.Text) + 1
  88. ElseIf 月清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "病假半天" Then : TextBox7.Text = Val(TextBox7.Text) + 0.5
  89. End If
  90. If 月清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "婚嫁一天" Then : TextBox8.Text = Val(TextBox8.Text) + 1
  91. ElseIf 月清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "婚嫁半天" Then : TextBox8.Text = Val(TextBox8.Text) + 0.5
  92. End If
  93. If 月清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "特休一天" Then : TextBox16.Text = Val(TextBox16.Text) + 1
  94. ElseIf 月清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "特休半天" Then : TextBox16.Text = Val(TextBox16.Text) + 0.5
  95. End If
  96. If 月清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "喪假一天" Then : TextBox9.Text = Val(TextBox9.Text) + 1
  97. ElseIf 月清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "喪假半天" Then : TextBox9.Text = Val(TextBox9.Text) + 0.5
  98. End If
  99. '---------平日上班計算-----------------------------------------------------------------------------------------------------------------------------
  100. Dim 正常時, 加班時, 上午1, 下午1 As Integer
  101. If 月清單_DGV.Rows(i).Cells("星期").Value.ToString <> "星期六" And 月清單_DGV.Rows(i).Cells("星期").Value.ToString <> "星期日" And
  102. 月清單_DGV.Rows(i).Cells("請假類別").Value.ToString <> "國定假日" And Strings.Right(月清單_DGV.Rows(i).Cells("請假類別").Value.ToString, 2) = "半天" And
  103. 月清單_DGV.Rows(i).Cells("整日工時").Value.ToString <> "" Then
  104. 當月平日天_tb.Text = Val(當月平日天_tb.Text) + 0.5
  105. 上午1 = 0
  106. If 月清單_DGV.Rows(i).Cells("上午上班").Value.ToString <> "" Then
  107. 月清單_DGV.Rows(i).Cells("上午下班").Value = "12:00:00"
  108. Dim TSFM As Integer = DateDiff("s", 月清單_DGV.Rows(i).Cells("上午上班").Value.ToString, 月清單_DGV.Rows(i).Cells("上午下班").Value) : 上午1 = TSFM
  109. End If
  110. 下午1 = 0
  111. If 月清單_DGV.Rows(i).Cells("下午下班").Value.ToString <> "" Then
  112. 月清單_DGV.Rows(i).Cells("下午上班").Value = "13:00:00"
  113. Dim TSFM As Integer = DateDiff("s", 月清單_DGV.Rows(i).Cells("下午上班").Value.ToString, 月清單_DGV.Rows(i).Cells("下午下班").Value)
  114. If TSFM > 23400 Then : TSFM -= 5400 : End If : 下午1 = TSFM
  115. End If
  116. 正常時 = (上午1 + 下午1)
  117. If 正常時 >= 28800 Then : 加班時 = 正常時 - 28800 : 正常時 = 28800 : Else : 加班時 = 0 : End If
  118. 正常時1 += 正常時 : 加班時1 += 加班時
  119. ElseIf 月清單_DGV.Rows(i).Cells("星期").Value.ToString <> "星期六" And 月清單_DGV.Rows(i).Cells("星期").Value.ToString <> "星期日" And
  120. 月清單_DGV.Rows(i).Cells("請假類別").Value.ToString <> "國定假日" And Strings.Right(月清單_DGV.Rows(i).Cells("請假類別").Value.ToString, 2) = "" And
  121. 月清單_DGV.Rows(i).Cells("整日工時").Value.ToString <> "" Then
  122. 當月平日天_tb.Text = Val(當月平日天_tb.Text) + 1
  123. 上午1 = 0
  124. If 月清單_DGV.Rows(i).Cells("上午上班").Value.ToString <> "" Then
  125. 月清單_DGV.Rows(i).Cells("上午下班").Value = "12:00:00"
  126. Dim TSFM As Integer = DateDiff("s", 月清單_DGV.Rows(i).Cells("上午上班").Value.ToString, 月清單_DGV.Rows(i).Cells("上午下班").Value) : 上午1 = TSFM
  127. End If
  128. 下午1 = 0
  129. If 月清單_DGV.Rows(i).Cells("下午下班").Value.ToString <> "" Then
  130. 月清單_DGV.Rows(i).Cells("下午上班").Value = "13:00:00"
  131. Dim TSFM As Integer = DateDiff("s", 月清單_DGV.Rows(i).Cells("下午上班").Value.ToString, 月清單_DGV.Rows(i).Cells("下午下班").Value)
  132. If TSFM > 23400 Then : TSFM -= 5400 : End If : 下午1 = TSFM
  133. End If
  134. 正常時 = (上午1 + 下午1)
  135. If 正常時 >= 28800 Then : 加班時 = 正常時 - 28800 : 正常時 = 28800 : Else : 加班時 = 0 : End If
  136. 正常時1 += 正常時 : 加班時1 += 加班時
  137. End If
  138. '---------假日上班計算-----------------------------------------------------------------------------------------------------------------------------
  139. Dim 假常時, 假加時 As Integer
  140. If (月清單_DGV.Rows(i).Cells("星期").Value.ToString = "星期六" Or 月清單_DGV.Rows(i).Cells("星期").Value.ToString = "星期日" Or
  141. 月清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "國定假日") And 月清單_DGV.Rows(i).Cells("整日工時").Value.ToString <> "" Then
  142. 當月假日天_tb.Text = Val(當月假日天_tb.Text) + 1
  143. Dim 上午2 As Integer = 0
  144. If 月清單_DGV.Rows(i).Cells("上午上班").Value.ToString <> "" Then
  145. 月清單_DGV.Rows(i).Cells("上午下班").Value = "12:00:00"
  146. Dim TSFM As Integer = DateDiff("s", 月清單_DGV.Rows(i).Cells("上午上班").Value.ToString, 月清單_DGV.Rows(i).Cells("上午下班").Value) : 上午2 = TSFM
  147. End If
  148. Dim 下午2 As Integer = 0
  149. If 月清單_DGV.Rows(i).Cells("下午下班").Value.ToString <> "" Then
  150. 月清單_DGV.Rows(i).Cells("下午上班").Value = "13:00:00"
  151. Dim TSFM As Integer = DateDiff("s", 月清單_DGV.Rows(i).Cells("下午上班").Value.ToString, 月清單_DGV.Rows(i).Cells("下午下班").Value)
  152. If TSFM > 23400 Then : TSFM -= 5400 : End If : 下午2 = TSFM
  153. End If
  154. 假常時 = (上午2 + 下午2)
  155. If 假常時 >= 28800 Then : 假加時 = 假常時 - 28800 : 假常時 = 28800 : Else : 假加時 = 0 : End If
  156. 假常時1 += 假常時 : 假加時1 += 假加時
  157. End If
  158. If 月清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "國定假日" Then : TextBox19.Text = Val(TextBox19.Text) + 1
  159. End If
  160. If 月清單_DGV.Rows(i).Cells("星期").Value.ToString = "星期六" Then : 月清單_DGV.Rows(i).DefaultCellStyle.BackColor = Color.LightPink
  161. ElseIf 月清單_DGV.Rows(i).Cells("星期").Value.ToString = "星期日" Then : 月清單_DGV.Rows(i).DefaultCellStyle.BackColor = Color.LightPink
  162. ElseIf 月清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "國定假日" Then : 月清單_DGV.Rows(i).DefaultCellStyle.BackColor = Color.LightPink
  163. ElseIf 月清單_DGV.Rows(i).Cells("請假類別").Value.ToString <> "" Then : 月清單_DGV.Rows(i).DefaultCellStyle.BackColor = Color.LightYellow
  164. End If
  165. Next : GCM_ERP_SYS.ToolStripProgressBar1.Value = 0 : 最終數 = 0
  166. T = 上午 \ 86400 : T1 = 上午 Mod 86400 : S = T1 \ 3600 : S1 = T1 Mod 3600 : F = S1 \ 60 : M = S1 Mod 60
  167. S2 = T * 24 + S & "時" : F2 = F & "分" : M2 = M & "秒"
  168. TextBox1.Text = S2 & F2 & M2
  169. T = 下午 \ 86400 : T1 = 下午 Mod 86400 : S = T1 \ 3600 : S1 = T1 Mod 3600 : F = S1 \ 60 : M = S1 Mod 60
  170. S2 = T * 24 + S & "時" : F2 = F & "分" : M2 = M & "秒"
  171. TextBox2.Text = S2 & F2 & M2
  172. T = (上午 + 下午) \ 86400 : T1 = (上午 + 下午) Mod 86400 : S = T1 \ 3600 : S1 = T1 Mod 3600 : F = S1 \ 60 : M = S1 Mod 60
  173. S2 = T * 24 + S & "時" : F2 = F & "分" : M2 = M & "秒"
  174. 上班總工時_tb.Text = S2 & F2 & M2
  175. TT = 正常時1 \ 86400 : TT1 = 正常時1 Mod 86400 : SS = TT1 \ 3600 : SS1 = TT1 Mod 3600 : FF = SS1 \ 60 : MM = SS1 Mod 60
  176. SS2 = TT * 24 + SS & "時" : FF2 = FF & "分" : MM2 = MM & "秒"
  177. 當月平日上班時_tb.Text = SS2 & FF2 & MM2
  178. If 加班時1 > Val(當月平日天_tb.Text) * 2 * 60 * 60 Then
  179. 加班時2 = 加班時1 - (Val(當月平日天_tb.Text) * 2 * 60 * 60)
  180. 加班時1 = Val(當月平日天_tb.Text) * 2 * 60 * 60
  181. End If
  182. TT = 加班時1 \ 86400 : TT2 = 加班時1 Mod 86400 : SS = TT2 \ 3600 : SS1 = TT2 Mod 3600 : FF = SS1 \ 60 : MM = SS1 Mod 60
  183. SS2 = TT * 24 + SS & "時" : FF2 = FF & "分" : MM2 = MM & "秒"
  184. 當月平日一段_tb.Text = SS2 & FF2 & MM2
  185. TT = 加班時2 \ 86400 : TT2 = 加班時2 Mod 86400 : SS = TT2 \ 3600 : SS1 = TT2 Mod 3600 : FF = SS1 \ 60 : MM = SS1 Mod 60
  186. SS2 = TT * 24 + SS & "時" : FF2 = FF & "分" : MM2 = MM & "秒"
  187. 當月平日二段_tb.Text = SS2 & FF2 & MM2
  188. TTT = 假常時1 \ 86400 : TTT1 = 假常時1 Mod 86400 : SSS = TTT1 \ 3600 : SSS1 = TTT1 Mod 3600 : FFF = SSS1 \ 60 : MMM = SSS1 Mod 60
  189. SSS2 = TTT * 24 + SSS & "時" : FFF2 = FFF & "分" : MMM2 = MMM & "秒"
  190. 一段假日加_tb.Text = SSS2 & FFF2 & MMM2
  191. TTT = 假加時1 \ 86400 : TTT2 = 假加時1 Mod 86400 : SSS = TTT2 \ 3600 : SSS1 = TTT2 Mod 3600 : FFF = SSS1 \ 60 : MMM = SSS1 Mod 60
  192. SSS2 = TTT * 24 + SSS & "時" : FFF2 = FFF & "分" : MMM2 = MMM & "秒"
  193. 二段假日加_tb.Text = SSS2 & FFF2 & MMM2
  194. End Sub
  195. Private Sub Set_人員清單()
  196. 人員_dgv.DataSource = Nothing : ds1.Clear()
  197. 人員_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  198. 人員_dgv.ColumnHeadersHeight = 25
  199. 人員_dgv.AllowUserToAddRows = False
  200. ConnOpen()
  201. SQL1 = "SELECT 人事資料表.員工編號, 使用者權限管理表.姓名 AS 系統登入姓名, 人事資料表.姓名, 人事資料表.入職日期, 人事資料表.離職日期
  202. FROM 使用者權限管理表 LEFT OUTER JOIN
  203. 人事資料表 ON 使用者權限管理表.員工編號 = 人事資料表.員工編號 AND
  204. 使用者權限管理表.姓名 = 人事資料表.系統登入姓名
  205. WHERE (使用者權限管理表.CC27 = 0) AND (人事資料表.員工編號 IS NOT NULL) AND (人事資料表.離職日期 LIKE '在職')
  206. ORDER BY 使用者權限管理表.姓名"
  207. CmdSet_For_DGV() : da.Fill(ds1) : 人員_dgv.DataSource = ds1.Tables(0) : conn.Close() : Set_grid1()
  208. End Sub
  209. Private Sub Set_grid1()
  210. 人員_dgv.Columns(0).FillWeight = 150 : 人員_dgv.Columns(1).FillWeight = 150 : 人員_dgv.Columns(2).Visible = False : 人員_dgv.Columns(3).Visible = False
  211. 人員_dgv.Columns(4).Visible = False
  212. End Sub
  213. Private Sub Set_年度考勤明細()
  214. 年清單_DGV.DataSource = Nothing : ds2.Clear()
  215. 年清單_DGV.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  216. 年清單_DGV.ColumnHeadersHeight = 25
  217. 年清單_DGV.AllowUserToAddRows = False
  218. ConnOpen()
  219. If Val(ComboBox1.Text) > 2019 Then
  220. SQL1 = "SELECT 萬年曆.日期, 萬年曆.星期, QQ.請假類別, AA.事由, AA.是否生效, AA.核准人, AA.核准日期, QQ.上午上班, QQ.上午上班 AS 上午下班, QQ.上午上班 AS 上午工時, QQ.下午下班 AS 下午上班,
  221. QQ.下午下班, QQ.下午下班 AS 下午工時, QQ.下午下班 AS 整日工時, BB.上午補登, BB.下午補登, QQ.員工編號
  222. FROM 萬年曆 LEFT OUTER JOIN
  223. (SELECT 員工編號, 日期, 請假類別, 事由, 是否生效, 核准人, 核准日期
  224. FROM 人事請假單
  225. WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 LIKE '" & ComboBox1.Text & "%')) AS AA ON 萬年曆.日期 = AA.日期
  226. LEFT OUTER JOIN
  227. (SELECT 員工編號, 日期, 請假類別, 上午上班, 下午下班
  228. FROM 人事考勤明細表
  229. WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 LIKE '" & ComboBox1.Text & "%')) AS QQ ON 萬年曆.日期 = QQ.日期
  230. LEFT OUTER JOIN
  231. (SELECT 員工編號, 日期, 上午補登, 下午補登
  232. FROM 人事漏打卡補登紀錄
  233. WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 LIKE '" & ComboBox1.Text & "%')) AS BB ON 萬年曆.日期 = BB.日期
  234. WHERE (萬年曆.日期 LIKE '" & ComboBox1.Text & "%') ORDER BY 萬年曆.日期"
  235. ElseIf Val(ComboBox1.Text) = 2019 Then
  236. SQL1 = "SELECT 萬年曆.日期, 萬年曆.星期, QQ.請假類別, AA.事由, AA.是否生效, AA.核准人, AA.核准日期, QQ.上午上班, QQ.上午上班 AS 上午下班, QQ.上午上班 AS 上午工時, QQ.下午下班 AS 下午上班,
  237. QQ.下午下班, QQ.下午下班 AS 下午工時, QQ.下午下班 AS 整日工時, BB.上午補登, BB.下午補登, QQ.員工編號
  238. FROM 萬年曆 LEFT OUTER JOIN
  239. (SELECT 員工編號, 日期, 請假類別, 事由, 是否生效, 核准人, 核准日期
  240. FROM 人事請假單
  241. WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 BETWEEN '2019/11/01' AND '2019/12/31')) AS AA ON 萬年曆.日期 = AA.日期
  242. LEFT OUTER JOIN
  243. (SELECT 員工編號, 日期, 請假類別, 上午上班, 下午下班
  244. FROM 人事考勤明細表
  245. WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 BETWEEN '2019/11/01' AND '2019/12/31')) AS QQ ON 萬年曆.日期 = QQ.日期
  246. LEFT OUTER JOIN
  247. (SELECT 員工編號, 日期, 上午補登, 下午補登
  248. FROM 人事漏打卡補登紀錄
  249. WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 BETWEEN '2019/11/01' AND '2019/12/31')) AS BB ON 萬年曆.日期 = BB.日期
  250. WHERE (萬年曆.日期 BETWEEN '2019/11/01' AND '2019/12/31') ORDER BY 萬年曆.日期"
  251. End If
  252. CmdSet_For_DGV() : da.Fill(ds2) : 年清單_DGV.DataSource = ds2.Tables(0) : conn.Close() : Set_grid2()
  253. End Sub
  254. Private Sub Set_grid2()
  255. Dim 漏打 As Integer = 0
  256. TextBox15.Text = "0" : TextBox14.Text = "0" : TextBox13.Text = "0" : TextBox12.Text = "0" : TextBox17.Text = "0" : TextBox11.Text = "0" : TextBox20.Text = "0"
  257. For i As Integer = 0 To 年清單_DGV.Rows.Count - 1
  258. 資料數 = 年清單_DGV.Rows.Count : MyModule1.進度條()
  259. If 年清單_DGV.Rows(i).Cells("日期").Value < Today() Then
  260. If 年清單_DGV.Rows(i).Cells("星期").Value.ToString = "星期日" Or 年清單_DGV.Rows(i).Cells("星期").Value.ToString = "星期六" Then
  261. ElseIf 年清單_DGV.Rows(i).Cells("請假類別").Value.ToString <> "" Then
  262. Else
  263. If 年清單_DGV.Rows(i).Cells("日期").Value >= 入職日期_dtp.Value Then
  264. If 年清單_DGV.Rows(i).Cells("上午上班").Value.ToString = "" Then : 漏打 += 1 : End If
  265. If 年清單_DGV.Rows(i).Cells("下午下班").Value.ToString = "" Then : 漏打 += 1 : End If
  266. End If
  267. End If
  268. End If
  269. If 年清單_DGV.Rows(i).Cells("上午補登").Value.ToString = "1" Then : 漏打 += 1 : End If
  270. If 年清單_DGV.Rows(i).Cells("下午補登").Value.ToString = "1" Then : 漏打 += 1 : End If
  271. TextBox10.Text = 漏打
  272. If 年清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "育嬰假一天" Then : TextBox15.Text = Val(TextBox15.Text) + 1
  273. ElseIf 年清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "育嬰假半天" Then : TextBox15.Text = Val(TextBox15.Text) + 0.5
  274. End If
  275. If 年清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "事假一天" Then : TextBox14.Text = Val(TextBox14.Text) + 1
  276. ElseIf 年清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "事假半天" Then : TextBox14.Text = Val(TextBox14.Text) + 0.5
  277. End If
  278. If 年清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "病假一天" Then : TextBox13.Text = Val(TextBox13.Text) + 1
  279. ElseIf 年清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "病假半天" Then : TextBox13.Text = Val(TextBox13.Text) + 0.5
  280. End If
  281. If 年清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "婚嫁一天" Then : TextBox12.Text = Val(TextBox12.Text) + 1
  282. ElseIf 年清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "婚嫁半天" Then : TextBox12.Text = Val(TextBox12.Text) + 0.5
  283. End If
  284. If 年清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "特休一天" Then : TextBox17.Text = Val(TextBox17.Text) + 1
  285. ElseIf 年清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "特休半天" Then : TextBox17.Text = Val(TextBox17.Text) + 0.5
  286. End If
  287. If 年清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "喪假一天" Then : TextBox11.Text = Val(TextBox11.Text) + 1
  288. ElseIf 年清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "喪假半天" Then : TextBox11.Text = Val(TextBox11.Text) + 0.5
  289. End If
  290. If 年清單_DGV.Rows(i).Cells("請假類別").Value.ToString = "國定假日" Then : TextBox20.Text = Val(TextBox20.Text) + 1
  291. End If
  292. Next : GCM_ERP_SYS.ToolStripProgressBar1.Value = 0 : 最終數 = 0
  293. End Sub
  294. Private Sub ComboBox1下拉表單資料載入()
  295. conn.Close()
  296. ConnOpen()
  297. SQL1 = "SELECT 年份 FROM 年份清單 ORDER BY 年份 DESC"
  298. CmdSet_For_dr()
  299. ComboBox1.Items.Clear()
  300. While (dr.Read()) : ComboBox1.Items.Add(dr("年份")) : End While
  301. conn.Close()
  302. End Sub
  303. Private Sub 人員考勤明細表_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  304. Me.MdiParent = GCM_ERP_SYS : Me.WindowState = 2 : Me.AutoScroll = True
  305. Set_人員清單() : ComboBox1下拉表單資料載入() : 年清單_DGV.Visible = False
  306. ComboBox1.Text = Year(Today) : ComboBox2.SelectedIndex = Month(Today) - 1
  307. TextBox5.Text = "0" : TextBox6.Text = "0" : TextBox7.Text = "0" : TextBox8.Text = "0" : TextBox16.Text = "0" : TextBox9.Text = "0"
  308. TextBox15.Text = "0" : TextBox14.Text = "0" : TextBox13.Text = "0" : TextBox12.Text = "0" : TextBox17.Text = "0" : TextBox11.Text = "0"
  309. End Sub
  310. Private Sub 登入閒置控制_MouseMove(sender As Object, e As EventArgs) Handles MyBase.MouseMove
  311. timeNow = 0
  312. GCM_ERP_SYS.Timer1.Enabled = False
  313. GCM_ERP_SYS.Timer1.Enabled = True
  314. End Sub
  315. Private Sub 登入閒置控制_KeyPress(sender As Object, e As EventArgs) Handles MyBase.KeyPress
  316. timeNow = 0
  317. GCM_ERP_SYS.Timer1.Enabled = False
  318. GCM_ERP_SYS.Timer1.Enabled = True
  319. End Sub
  320. Private Sub 人員_dgv_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles 人員_dgv.CellClick
  321. If e.RowIndex = -1 Then : Else
  322. 編號 = 人員_dgv(0, e.RowIndex).Value.ToString : 入職日期_dtp.Value = 人員_dgv(3, e.RowIndex).Value.ToString
  323. Dim TSFM As Integer = DateDiff("d", 入職日期_dtp.Value, Today()) : TextBox18.Text = TSFM
  324. Set_考勤明細() : Set_年度考勤明細()
  325. End If
  326. End Sub
  327. Private Sub 重新讀取_bt_Click(sender As Object, e As EventArgs) Handles 重新讀取_bt.Click
  328. Set_考勤明細() : Set_年度考勤明細()
  329. End Sub
  330. End Class