Нет описания
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

考勤打卡資料補登.vb 18KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. Option Strict Off
  2. Imports System.Data.SqlClient
  3. Public Class 考勤打卡資料補登
  4. ReadOnly ds, ds1 As New DataSet
  5. Dim 編號 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 As Integer : Dim T2, S2, F2, M2 As String : Dim 上午 As Integer = 0 : Dim 下午 As Integer = 0
  36. For i As Integer = 0 To 明細_DGV.Rows.Count - 1
  37. 資料數 = 明細_DGV.Rows.Count : MyModule1.進度條()
  38. Dim QASW As Integer = 0
  39. If 明細_DGV.Rows(i).Cells("上午上班").Value.ToString <> "" Then
  40. 明細_DGV.Rows(i).Cells("上午下班").Value = "12:00:00"
  41. Dim TSFM As Integer = DateDiff("s", 明細_DGV.Rows(i).Cells("上午上班").Value.ToString, 明細_DGV.Rows(i).Cells("上午下班").Value)
  42. T = TSFM \ 86400 : T1 = TSFM Mod 86400 : S = T1 \ 3600 : S1 = T1 Mod 3600 : F = S1 \ 60 : M = S1 Mod 60
  43. If T = 0 Then : T2 = "" : Else : T2 = T & "天" : End If : If S = 0 Then : S2 = "" : Else : S2 = S & "時" : End If : If F = 0 Then : F2 = "" : Else : F2 = F & "分" : End If : M2 = M & "秒"
  44. 明細_DGV.Rows(i).Cells("上午工時").Value = T2 & S2 & F2 & M2
  45. QASW += TSFM : 上午 += TSFM
  46. End If
  47. If 明細_DGV.Rows(i).Cells("下午下班").Value.ToString <> "" Then
  48. 明細_DGV.Rows(i).Cells("下午上班").Value = "13:00:00"
  49. Dim TSFM As Integer = DateDiff("s", 明細_DGV.Rows(i).Cells("下午上班").Value.ToString, 明細_DGV.Rows(i).Cells("下午下班").Value)
  50. If TSFM > 23400 Then
  51. TSFM -= 5400
  52. End If
  53. T = TSFM \ 86400 : T1 = TSFM Mod 86400 : S = T1 \ 3600 : S1 = T1 Mod 3600 : F = S1 \ 60 : M = S1 Mod 60
  54. If T = 0 Then : T2 = "" : Else : T2 = T & "天" : End If : If S = 0 Then : S2 = "" : Else : S2 = S & "時" : End If : If F = 0 Then : F2 = "" : Else : F2 = F & "分" : End If : M2 = M & "秒"
  55. 明細_DGV.Rows(i).Cells("下午工時").Value = T2 & S2 & F2 & M2
  56. QASW += TSFM : 下午 += TSFM
  57. End If
  58. If QASW = 0 Then : Else
  59. T = QASW \ 86400 : T1 = QASW Mod 86400 : S = T1 \ 3600 : S1 = T1 Mod 3600 : F = S1 \ 60 : M = S1 Mod 60
  60. If T = 0 Then : T2 = "" : Else : T2 = T & "天" : End If : If S = 0 Then : S2 = "" : Else : S2 = S & "時" : End If : If F = 0 Then : F2 = "" : Else : F2 = F & "分" : End If : M2 = M & "秒"
  61. 明細_DGV.Rows(i).Cells("整日工時").Value = T2 & S2 & F2 & M2
  62. End If
  63. If 明細_DGV.Rows(i).Cells("星期").Value.ToString = "星期六" Then : 明細_DGV.Rows(i).DefaultCellStyle.BackColor = Color.LightPink
  64. ElseIf 明細_DGV.Rows(i).Cells("星期").Value.ToString = "星期日" Then : 明細_DGV.Rows(i).DefaultCellStyle.BackColor = Color.LightPink
  65. ElseIf 明細_DGV.Rows(i).Cells("請假類別").Value.ToString = "國定假日" Then : 明細_DGV.Rows(i).DefaultCellStyle.BackColor = Color.LightPink
  66. ElseIf 明細_DGV.Rows(i).Cells("請假類別").Value.ToString <> "" Then : 明細_DGV.Rows(i).DefaultCellStyle.BackColor = Color.LightYellow
  67. End If
  68. Next : GCM_ERP_SYS.ToolStripProgressBar1.Value = 0 : 最終數 = 0
  69. End Sub
  70. Private Sub Set_人員清單()
  71. DataGridView2.DataSource = Nothing : ds1.Clear()
  72. DataGridView2.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  73. DataGridView2.ColumnHeadersHeight = 25
  74. DataGridView2.AllowUserToAddRows = False
  75. ConnOpen()
  76. SQL1 = "SELECT 人事資料表.員工編號, 使用者權限管理表.姓名 AS 系統登入姓名, 人事資料表.姓名, 人事資料表.入職日期, 人事資料表.離職日期
  77. FROM 使用者權限管理表 LEFT OUTER JOIN
  78. 人事資料表 ON 使用者權限管理表.員工編號 = 人事資料表.員工編號 AND
  79. 使用者權限管理表.姓名 = 人事資料表.系統登入姓名
  80. WHERE (使用者權限管理表.CC27 = 0) AND (人事資料表.員工編號 IS NOT NULL) AND (人事資料表.離職日期 LIKE '在職')
  81. ORDER BY 使用者權限管理表.姓名"
  82. CmdSet_For_DGV() : da.Fill(ds1) : DataGridView2.DataSource = ds1.Tables(0) : conn.Close() : Set_grid1()
  83. End Sub
  84. Private Sub Set_grid1()
  85. DataGridView2.Columns(0).FillWeight = 150 : DataGridView2.Columns(1).FillWeight = 150 : DataGridView2.Columns(2).Visible = False : DataGridView2.Columns(3).Visible = False
  86. DataGridView2.Columns(4).Visible = False
  87. End Sub
  88. Private Sub ComboBox1下拉表單資料載入()
  89. conn.Close()
  90. ConnOpen()
  91. SQL1 = "SELECT 年份 FROM 年份清單 ORDER BY 年份 DESC"
  92. CmdSet_For_dr()
  93. ComboBox1.Items.Clear()
  94. While (dr.Read()) : ComboBox1.Items.Add(dr("年份")) : End While
  95. conn.Close()
  96. End Sub
  97. Private Sub 考勤打卡資料補登_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  98. Me.MdiParent = GCM_ERP_SYS : Me.WindowState = 2 : Me.AutoScroll = True
  99. ComboBox1下拉表單資料載入() : Set_人員清單()
  100. ComboBox1.Text = Year(Today) : ComboBox2.SelectedIndex = Month(Today) - 1
  101. ComboBox12.Enabled = False : ComboBox11.Enabled = False : ComboBox10.Enabled = False : ComboBox9.Enabled = False : ComboBox8.Enabled = False
  102. ComboBox3.Enabled = False : ComboBox4.Enabled = False : ComboBox5.Enabled = False : ComboBox6.Enabled = False : ComboBox7.Enabled = False
  103. ComboBox3.SelectedIndex = 0 : ComboBox4.SelectedIndex = 0 : ComboBox5.SelectedIndex = 0 : ComboBox6.SelectedIndex = 0 : ComboBox7.SelectedIndex = 0
  104. ComboBox8.SelectedIndex = 0 : ComboBox9.SelectedIndex = 0 : ComboBox10.SelectedIndex = 0 : ComboBox11.SelectedIndex = 0 : ComboBox12.SelectedIndex = 0
  105. End Sub
  106. Private Sub 登入閒置控制_MouseMove(sender As Object, e As EventArgs) Handles MyBase.MouseMove
  107. timeNow = 0
  108. GCM_ERP_SYS.Timer1.Enabled = False
  109. GCM_ERP_SYS.Timer1.Enabled = True
  110. End Sub
  111. Private Sub 登入閒置控制_KeyPress(sender As Object, e As EventArgs) Handles MyBase.KeyPress
  112. timeNow = 0
  113. GCM_ERP_SYS.Timer1.Enabled = False
  114. GCM_ERP_SYS.Timer1.Enabled = True
  115. End Sub
  116. Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles 明細_DGV.CellClick
  117. If e.RowIndex = -1 Then : Else
  118. 請假日期_tb.Text = 明細_DGV(0, e.RowIndex).Value.ToString
  119. End If
  120. End Sub
  121. Private Sub DataGridView2_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView2.CellClick
  122. If e.RowIndex = -1 Then : Else
  123. 編號 = DataGridView2(0, e.RowIndex).Value.ToString : Set_考勤明細() : DateTimePicker1.Value = DataGridView2(3, e.RowIndex).Value.ToString
  124. Dim TSFM As Integer = DateDiff("d", DateTimePicker1.Value, Today()) : TextBox18.Text = TSFM
  125. 申請人_tb.Text = DataGridView2(1, e.RowIndex).Value.ToString : 員工編號_tb.Text = DataGridView2(0, e.RowIndex).Value.ToString
  126. End If
  127. End Sub
  128. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles 補登上午_bt.Click
  129. 補登上午_bt.Enabled = False : 補登下午_bt.Enabled = True : Label8.Text = "選擇補登考勤時段 : 上午上班"
  130. ComboBox12.Enabled = False : ComboBox11.Enabled = False : ComboBox10.Enabled = False : ComboBox9.Enabled = False : ComboBox8.Enabled = False
  131. ComboBox3.Enabled = True : ComboBox4.Enabled = True : ComboBox5.Enabled = True : ComboBox6.Enabled = True : ComboBox7.Enabled = True
  132. End Sub
  133. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles 補登下午_bt.Click
  134. 補登上午_bt.Enabled = True : 補登下午_bt.Enabled = False : Label8.Text = "選擇補登考勤時段 : 下午下班"
  135. ComboBox12.Enabled = True : ComboBox11.Enabled = True : ComboBox10.Enabled = True : ComboBox9.Enabled = True : ComboBox8.Enabled = True
  136. ComboBox3.Enabled = False : ComboBox4.Enabled = False : ComboBox5.Enabled = False : ComboBox6.Enabled = False : ComboBox7.Enabled = False
  137. End Sub
  138. Private Sub Button5_Click(sender As Object, e As EventArgs) Handles 公事出差_bt.Click
  139. Label9.Text = "選擇補登考勤特性 : 公事出差,考勤表會取消該次漏打卡紀錄"
  140. 漏打卡_bt.Enabled = True : 公事出差_bt.Enabled = False
  141. End Sub
  142. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles 漏打卡_bt.Click
  143. Label9.Text = "選擇補登考勤特性 : 漏打卡,考勤表不會取消該次漏打卡紀錄"
  144. 漏打卡_bt.Enabled = False : 公事出差_bt.Enabled = True
  145. End Sub
  146. Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
  147. If 申請人_tb.Text = "" Or 請假日期_tb.Text = "" Or 員工編號_tb.Text = "" Then
  148. Else
  149. Dim 有無資料判別1 As String = "" : Dim 有無資料判別2 As String = "" : PA = ""
  150. ConnOpen()
  151. SQL1 = "SELECT 員工編號 FROM 人事漏打卡補登紀錄 WHERE 員工編號 LIKE '" & 編號 & "' AND 日期 LIKE '" & 請假日期_tb.Text & "'"
  152. cmd.Connection = conn : cmd.CommandText = SQL1 : dr = cmd.ExecuteReader
  153. If dr.Read() Then : 有無資料判別1 = dr("員工編號").ToString : End If : conn.Close()
  154. ConnOpen()
  155. SQL1 = "SELECT 員工編號 FROM 人事考勤明細表 WHERE 員工編號 LIKE '" & 編號 & "' AND 日期 LIKE '" & 請假日期_tb.Text & "'"
  156. cmd.Connection = conn : cmd.CommandText = SQL1 : dr = cmd.ExecuteReader
  157. If dr.Read() Then : 有無資料判別2 = dr("員工編號").ToString : End If : conn.Close()
  158. ConnOpen()
  159. If 有無資料判別1 = "" Then
  160. If 公事出差_bt.Enabled = False And 漏打卡_bt.Enabled = True Then
  161. PA = InputBox("請輸入公出原因")
  162. If PA = "" Then
  163. MsgBox("公出原因不可空白") : Exit Sub
  164. End If
  165. End If
  166. If 補登上午_bt.Enabled = False And 補登下午_bt.Enabled = True And 公事出差_bt.Enabled = False And 漏打卡_bt.Enabled = True Then
  167. SQL1 = "INSERT INTO 人事漏打卡補登紀錄 (員工編號, 日期, 上午補登, 下午補登, 公出事由) SELECT N'" & 編號 & "',N'" & 請假日期_tb.Text & "',N'',N'','" & PA & "'"
  168. ElseIf 補登上午_bt.Enabled = False And 補登下午_bt.Enabled = True And 公事出差_bt.Enabled = True And 漏打卡_bt.Enabled = False Then
  169. SQL1 = "INSERT INTO 人事漏打卡補登紀錄 (員工編號, 日期, 上午補登, 下午補登, 公出事由) SELECT N'" & 編號 & "',N'" & 請假日期_tb.Text & "',N'1',N'','漏打卡'"
  170. ElseIf 補登上午_bt.Enabled = True And 補登下午_bt.Enabled = False And 公事出差_bt.Enabled = False And 漏打卡_bt.Enabled = True Then
  171. SQL1 = "INSERT INTO 人事漏打卡補登紀錄 (員工編號, 日期, 上午補登, 下午補登, 公出事由) SELECT N'" & 編號 & "',N'" & 請假日期_tb.Text & "',N'',N'','" & PA & "'"
  172. ElseIf 補登上午_bt.Enabled = True And 補登下午_bt.Enabled = False And 公事出差_bt.Enabled = True And 漏打卡_bt.Enabled = False Then
  173. SQL1 = "INSERT INTO 人事漏打卡補登紀錄 (員工編號, 日期, 上午補登, 下午補登, 公出事由) SELECT N'" & 編號 & "',N'" & 請假日期_tb.Text & "',N'',N'1','漏打卡'"
  174. End If
  175. Else
  176. If 補登上午_bt.Enabled = False And 補登下午_bt.Enabled = True And 公事出差_bt.Enabled = False And 漏打卡_bt.Enabled = True Then
  177. ElseIf 補登上午_bt.Enabled = False And 補登下午_bt.Enabled = True And 公事出差_bt.Enabled = True And 漏打卡_bt.Enabled = False Then
  178. SQL1 = "UPDATE 人事漏打卡補登紀錄 SET 上午補登 = N'1' WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 LIKE '" & 請假日期_tb.Text & "')"
  179. ElseIf 補登上午_bt.Enabled = True And 補登下午_bt.Enabled = False And 公事出差_bt.Enabled = False And 漏打卡_bt.Enabled = True Then
  180. ElseIf 補登上午_bt.Enabled = True And 補登下午_bt.Enabled = False And 公事出差_bt.Enabled = True And 漏打卡_bt.Enabled = False Then
  181. SQL1 = "UPDATE 人事漏打卡補登紀錄 SET 下午補登 = N'1' WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 LIKE '" & 請假日期_tb.Text & "')"
  182. End If
  183. End If
  184. CmdSet_For_dr() : conn.Close()
  185. ConnOpen()
  186. If 有無資料判別2 = "" Then
  187. If 補登上午_bt.Enabled = False And 補登下午_bt.Enabled = True Then
  188. SQL1 = "INSERT INTO 人事考勤明細表 (員工編號, 日期, 請假類別, 上午上班, 下午下班) SELECT N'" & 編號 & "',N'" & 請假日期_tb.Text & "',N'',
  189. N'" & ComboBox3.Text & ":" & ComboBox4.Text & ComboBox5.Text & ":" & ComboBox6.Text & ComboBox7.Text & "', N''"
  190. ElseIf 補登上午_bt.Enabled = True And 補登下午_bt.Enabled = False Then
  191. SQL1 = "INSERT INTO 人事考勤明細表 (員工編號, 日期, 請假類別, 上午上班, 下午下班) SELECT N'" & 編號 & "',N'" & 請假日期_tb.Text & "',N'',
  192. N'', N'" & ComboBox12.Text & ":" & ComboBox11.Text & ComboBox10.Text & ":" & ComboBox9.Text & ComboBox8.Text & "'"
  193. End If
  194. Else
  195. If 補登上午_bt.Enabled = False And 補登下午_bt.Enabled = True Then
  196. SQL1 = "UPDATE 人事考勤明細表 SET 上午上班 = N'" & ComboBox3.Text & ":" & ComboBox4.Text & ComboBox5.Text & ":" & ComboBox6.Text & ComboBox7.Text & "'
  197. WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 LIKE '" & 請假日期_tb.Text & "')"
  198. ElseIf 補登上午_bt.Enabled = True And 補登下午_bt.Enabled = False Then
  199. SQL1 = "UPDATE 人事考勤明細表 SET 下午下班 = N'" & ComboBox12.Text & ":" & ComboBox11.Text & ComboBox10.Text & ":" & ComboBox9.Text & ComboBox8.Text & "'
  200. WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 LIKE '" & 請假日期_tb.Text & "')"
  201. End If
  202. End If
  203. CmdSet_For_dr() : conn.Close()
  204. Set_考勤明細() : MsgBox("補打卡成功")
  205. 漏打卡_bt.Enabled = True : 公事出差_bt.Enabled = True : 補登上午_bt.Enabled = True : 補登下午_bt.Enabled = True
  206. ComboBox12.Enabled = False : ComboBox11.Enabled = False : ComboBox10.Enabled = False : ComboBox9.Enabled = False : ComboBox8.Enabled = False
  207. ComboBox3.Enabled = False : ComboBox4.Enabled = False : ComboBox5.Enabled = False : ComboBox6.Enabled = False : ComboBox7.Enabled = False
  208. ComboBox3.SelectedIndex = 0 : ComboBox4.SelectedIndex = 0 : ComboBox5.SelectedIndex = 0 : ComboBox6.SelectedIndex = 0 : ComboBox7.SelectedIndex = 0
  209. ComboBox8.SelectedIndex = 0 : ComboBox9.SelectedIndex = 0 : ComboBox10.SelectedIndex = 0 : ComboBox11.SelectedIndex = 0 : ComboBox12.SelectedIndex = 0
  210. End If
  211. End Sub
  212. End Class