Option Strict Off Imports System.Data.SqlClient Public Class 考勤打卡資料補登 ReadOnly ds, ds1 As New DataSet Dim 編號 As String Private Sub Set_考勤明細() 明細_DGV.DataSource = Nothing : ds.Clear() 明細_DGV.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 明細_DGV.ColumnHeadersHeight = 25 明細_DGV.AllowUserToAddRows = False ConnOpen() SQL1 = "SELECT 萬年曆.日期, 萬年曆.星期, QQ.請假類別, AA.事由, AA.是否生效, AA.核准人, AA.核准日期, QQ.上午上班, QQ.上午上班 AS 上午下班, QQ.上午上班 AS 上午工時, QQ.下午下班 AS 下午上班, QQ.下午下班, QQ.下午下班 AS 下午工時, QQ.下午下班 AS 整日工時, BB.上午補登, BB.下午補登, BB.公出事由, QQ.員工編號 FROM 萬年曆 LEFT OUTER JOIN (SELECT 員工編號, 日期, 請假類別, 事由, 是否生效, 核准人, 核准日期 FROM 人事請假單 WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 LIKE '" & ComboBox1.Text & "/" & ComboBox2.Text & "%')) AS AA ON 萬年曆.日期 = AA.日期 LEFT OUTER JOIN (SELECT 員工編號, 日期, 請假類別, 上午上班, 下午下班 FROM 人事考勤明細表 WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 LIKE '" & ComboBox1.Text & "/" & ComboBox2.Text & "%')) AS QQ ON 萬年曆.日期 = QQ.日期 LEFT OUTER JOIN (SELECT 員工編號, 日期, 上午補登, 下午補登, 公出事由 FROM 人事漏打卡補登紀錄 WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 LIKE '" & ComboBox1.Text & "/" & ComboBox2.Text & "%')) AS BB ON 萬年曆.日期 = BB.日期 WHERE (萬年曆.日期 LIKE '" & ComboBox1.Text & "/" & ComboBox2.Text & "%') ORDER BY 萬年曆.日期" CmdSet_For_DGV() : da.Fill(ds) : 明細_DGV.DataSource = ds.Tables(0) : conn.Close() : Set_grid() End Sub Private Sub Set_grid() 明細_DGV.Columns(0).FillWeight = 85 : 明細_DGV.Columns(1).FillWeight = 60 : 明細_DGV.Columns(2).FillWeight = 90 : 明細_DGV.Columns(3).FillWeight = 262 明細_DGV.Columns(4).FillWeight = 80 : 明細_DGV.Columns(5).FillWeight = 65 : 明細_DGV.Columns(6).FillWeight = 90 : 明細_DGV.Columns(7).FillWeight = 75 明細_DGV.Columns(8).FillWeight = 75 : 明細_DGV.Columns(9).FillWeight = 80 : 明細_DGV.Columns(10).FillWeight = 75 : 明細_DGV.Columns(11).FillWeight = 75 明細_DGV.Columns(12).FillWeight = 80 : 明細_DGV.Columns(13).FillWeight = 90 : 明細_DGV.Columns(14).FillWeight = 70 : 明細_DGV.Columns(15).FillWeight = 70 明細_DGV.Columns(16).FillWeight = 262 : 明細_DGV.Columns(17).Visible = False Dim T, S, F, M, T1, S1 As Integer : Dim T2, S2, F2, M2 As String : Dim 上午 As Integer = 0 : Dim 下午 As Integer = 0 For i As Integer = 0 To 明細_DGV.Rows.Count - 1 資料數 = 明細_DGV.Rows.Count : MyModule1.進度條() Dim QASW As Integer = 0 If 明細_DGV.Rows(i).Cells("上午上班").Value.ToString <> "" Then 明細_DGV.Rows(i).Cells("上午下班").Value = "12:00:00" Dim TSFM As Integer = DateDiff("s", 明細_DGV.Rows(i).Cells("上午上班").Value.ToString, 明細_DGV.Rows(i).Cells("上午下班").Value) T = TSFM \ 86400 : T1 = TSFM Mod 86400 : S = T1 \ 3600 : S1 = T1 Mod 3600 : F = S1 \ 60 : M = S1 Mod 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 & "秒" 明細_DGV.Rows(i).Cells("上午工時").Value = T2 & S2 & F2 & M2 QASW += TSFM : 上午 += TSFM End If If 明細_DGV.Rows(i).Cells("下午下班").Value.ToString <> "" Then 明細_DGV.Rows(i).Cells("下午上班").Value = "13:00:00" Dim TSFM As Integer = DateDiff("s", 明細_DGV.Rows(i).Cells("下午上班").Value.ToString, 明細_DGV.Rows(i).Cells("下午下班").Value) If TSFM > 23400 Then TSFM -= 5400 End If T = TSFM \ 86400 : T1 = TSFM Mod 86400 : S = T1 \ 3600 : S1 = T1 Mod 3600 : F = S1 \ 60 : M = S1 Mod 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 & "秒" 明細_DGV.Rows(i).Cells("下午工時").Value = T2 & S2 & F2 & M2 QASW += TSFM : 下午 += TSFM End If If QASW = 0 Then : Else T = QASW \ 86400 : T1 = QASW Mod 86400 : S = T1 \ 3600 : S1 = T1 Mod 3600 : F = S1 \ 60 : M = S1 Mod 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 & "秒" 明細_DGV.Rows(i).Cells("整日工時").Value = T2 & S2 & F2 & M2 End If If 明細_DGV.Rows(i).Cells("星期").Value.ToString = "星期六" Then : 明細_DGV.Rows(i).DefaultCellStyle.BackColor = Color.LightPink ElseIf 明細_DGV.Rows(i).Cells("星期").Value.ToString = "星期日" Then : 明細_DGV.Rows(i).DefaultCellStyle.BackColor = Color.LightPink ElseIf 明細_DGV.Rows(i).Cells("請假類別").Value.ToString = "國定假日" Then : 明細_DGV.Rows(i).DefaultCellStyle.BackColor = Color.LightPink ElseIf 明細_DGV.Rows(i).Cells("請假類別").Value.ToString <> "" Then : 明細_DGV.Rows(i).DefaultCellStyle.BackColor = Color.LightYellow End If Next : GCM_ERP_SYS.ToolStripProgressBar1.Value = 0 : 最終數 = 0 End Sub Private Sub Set_人員清單() DataGridView2.DataSource = Nothing : ds1.Clear() DataGridView2.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing DataGridView2.ColumnHeadersHeight = 25 DataGridView2.AllowUserToAddRows = False ConnOpen() SQL1 = "SELECT 人事資料表.員工編號, 使用者權限管理表.姓名 AS 系統登入姓名, 人事資料表.姓名, 人事資料表.入職日期, 人事資料表.離職日期 FROM 使用者權限管理表 LEFT OUTER JOIN 人事資料表 ON 使用者權限管理表.員工編號 = 人事資料表.員工編號 AND 使用者權限管理表.姓名 = 人事資料表.系統登入姓名 WHERE (使用者權限管理表.CC27 = 0) AND (人事資料表.員工編號 IS NOT NULL) AND (人事資料表.離職日期 LIKE '在職') ORDER BY 使用者權限管理表.姓名" CmdSet_For_DGV() : da.Fill(ds1) : DataGridView2.DataSource = ds1.Tables(0) : conn.Close() : Set_grid1() End Sub Private Sub Set_grid1() DataGridView2.Columns(0).FillWeight = 150 : DataGridView2.Columns(1).FillWeight = 150 : DataGridView2.Columns(2).Visible = False : DataGridView2.Columns(3).Visible = False DataGridView2.Columns(4).Visible = False End Sub Private Sub ComboBox1下拉表單資料載入() conn.Close() ConnOpen() SQL1 = "SELECT 年份 FROM 年份清單 ORDER BY 年份 DESC" CmdSet_For_dr() ComboBox1.Items.Clear() While (dr.Read()) : ComboBox1.Items.Add(dr("年份")) : End While conn.Close() End Sub Private Sub 考勤打卡資料補登_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.MdiParent = GCM_ERP_SYS : Me.WindowState = 2 : Me.AutoScroll = True ComboBox1下拉表單資料載入() : Set_人員清單() ComboBox1.Text = Year(Today) : ComboBox2.SelectedIndex = Month(Today) - 1 ComboBox12.Enabled = False : ComboBox11.Enabled = False : ComboBox10.Enabled = False : ComboBox9.Enabled = False : ComboBox8.Enabled = False ComboBox3.Enabled = False : ComboBox4.Enabled = False : ComboBox5.Enabled = False : ComboBox6.Enabled = False : ComboBox7.Enabled = False ComboBox3.SelectedIndex = 0 : ComboBox4.SelectedIndex = 0 : ComboBox5.SelectedIndex = 0 : ComboBox6.SelectedIndex = 0 : ComboBox7.SelectedIndex = 0 ComboBox8.SelectedIndex = 0 : ComboBox9.SelectedIndex = 0 : ComboBox10.SelectedIndex = 0 : ComboBox11.SelectedIndex = 0 : ComboBox12.SelectedIndex = 0 End Sub Private Sub 登入閒置控制_MouseMove(sender As Object, e As EventArgs) Handles MyBase.MouseMove timeNow = 0 GCM_ERP_SYS.Timer1.Enabled = False GCM_ERP_SYS.Timer1.Enabled = True End Sub Private Sub 登入閒置控制_KeyPress(sender As Object, e As EventArgs) Handles MyBase.KeyPress timeNow = 0 GCM_ERP_SYS.Timer1.Enabled = False GCM_ERP_SYS.Timer1.Enabled = True End Sub Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles 明細_DGV.CellClick If e.RowIndex = -1 Then : Else 請假日期_tb.Text = 明細_DGV(0, e.RowIndex).Value.ToString End If End Sub Private Sub DataGridView2_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView2.CellClick If e.RowIndex = -1 Then : Else 編號 = DataGridView2(0, e.RowIndex).Value.ToString : Set_考勤明細() : DateTimePicker1.Value = DataGridView2(3, e.RowIndex).Value.ToString Dim TSFM As Integer = DateDiff("d", DateTimePicker1.Value, Today()) : TextBox18.Text = TSFM 申請人_tb.Text = DataGridView2(1, e.RowIndex).Value.ToString : 員工編號_tb.Text = DataGridView2(0, e.RowIndex).Value.ToString End If End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles 補登上午_bt.Click 補登上午_bt.Enabled = False : 補登下午_bt.Enabled = True : Label8.Text = "選擇補登考勤時段 : 上午上班" ComboBox12.Enabled = False : ComboBox11.Enabled = False : ComboBox10.Enabled = False : ComboBox9.Enabled = False : ComboBox8.Enabled = False ComboBox3.Enabled = True : ComboBox4.Enabled = True : ComboBox5.Enabled = True : ComboBox6.Enabled = True : ComboBox7.Enabled = True End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles 補登下午_bt.Click 補登上午_bt.Enabled = True : 補登下午_bt.Enabled = False : Label8.Text = "選擇補登考勤時段 : 下午下班" ComboBox12.Enabled = True : ComboBox11.Enabled = True : ComboBox10.Enabled = True : ComboBox9.Enabled = True : ComboBox8.Enabled = True ComboBox3.Enabled = False : ComboBox4.Enabled = False : ComboBox5.Enabled = False : ComboBox6.Enabled = False : ComboBox7.Enabled = False End Sub Private Sub Button5_Click(sender As Object, e As EventArgs) Handles 公事出差_bt.Click Label9.Text = "選擇補登考勤特性 : 公事出差,考勤表會取消該次漏打卡紀錄" 漏打卡_bt.Enabled = True : 公事出差_bt.Enabled = False End Sub Private Sub Button4_Click(sender As Object, e As EventArgs) Handles 漏打卡_bt.Click Label9.Text = "選擇補登考勤特性 : 漏打卡,考勤表不會取消該次漏打卡紀錄" 漏打卡_bt.Enabled = False : 公事出差_bt.Enabled = True End Sub Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click If 申請人_tb.Text = "" Or 請假日期_tb.Text = "" Or 員工編號_tb.Text = "" Then Else Dim 有無資料判別1 As String = "" : Dim 有無資料判別2 As String = "" : PA = "" ConnOpen() SQL1 = "SELECT 員工編號 FROM 人事漏打卡補登紀錄 WHERE 員工編號 LIKE '" & 編號 & "' AND 日期 LIKE '" & 請假日期_tb.Text & "'" cmd.Connection = conn : cmd.CommandText = SQL1 : dr = cmd.ExecuteReader If dr.Read() Then : 有無資料判別1 = dr("員工編號").ToString : End If : conn.Close() ConnOpen() SQL1 = "SELECT 員工編號 FROM 人事考勤明細表 WHERE 員工編號 LIKE '" & 編號 & "' AND 日期 LIKE '" & 請假日期_tb.Text & "'" cmd.Connection = conn : cmd.CommandText = SQL1 : dr = cmd.ExecuteReader If dr.Read() Then : 有無資料判別2 = dr("員工編號").ToString : End If : conn.Close() ConnOpen() If 有無資料判別1 = "" Then If 公事出差_bt.Enabled = False And 漏打卡_bt.Enabled = True Then PA = InputBox("請輸入公出原因") If PA = "" Then MsgBox("公出原因不可空白") : Exit Sub End If End If If 補登上午_bt.Enabled = False And 補登下午_bt.Enabled = True And 公事出差_bt.Enabled = False And 漏打卡_bt.Enabled = True Then SQL1 = "INSERT INTO 人事漏打卡補登紀錄 (員工編號, 日期, 上午補登, 下午補登, 公出事由) SELECT N'" & 編號 & "',N'" & 請假日期_tb.Text & "',N'',N'','" & PA & "'" ElseIf 補登上午_bt.Enabled = False And 補登下午_bt.Enabled = True And 公事出差_bt.Enabled = True And 漏打卡_bt.Enabled = False Then SQL1 = "INSERT INTO 人事漏打卡補登紀錄 (員工編號, 日期, 上午補登, 下午補登, 公出事由) SELECT N'" & 編號 & "',N'" & 請假日期_tb.Text & "',N'1',N'','漏打卡'" ElseIf 補登上午_bt.Enabled = True And 補登下午_bt.Enabled = False And 公事出差_bt.Enabled = False And 漏打卡_bt.Enabled = True Then SQL1 = "INSERT INTO 人事漏打卡補登紀錄 (員工編號, 日期, 上午補登, 下午補登, 公出事由) SELECT N'" & 編號 & "',N'" & 請假日期_tb.Text & "',N'',N'','" & PA & "'" ElseIf 補登上午_bt.Enabled = True And 補登下午_bt.Enabled = False And 公事出差_bt.Enabled = True And 漏打卡_bt.Enabled = False Then SQL1 = "INSERT INTO 人事漏打卡補登紀錄 (員工編號, 日期, 上午補登, 下午補登, 公出事由) SELECT N'" & 編號 & "',N'" & 請假日期_tb.Text & "',N'',N'1','漏打卡'" End If Else If 補登上午_bt.Enabled = False And 補登下午_bt.Enabled = True And 公事出差_bt.Enabled = False And 漏打卡_bt.Enabled = True Then ElseIf 補登上午_bt.Enabled = False And 補登下午_bt.Enabled = True And 公事出差_bt.Enabled = True And 漏打卡_bt.Enabled = False Then SQL1 = "UPDATE 人事漏打卡補登紀錄 SET 上午補登 = N'1' WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 LIKE '" & 請假日期_tb.Text & "')" ElseIf 補登上午_bt.Enabled = True And 補登下午_bt.Enabled = False And 公事出差_bt.Enabled = False And 漏打卡_bt.Enabled = True Then ElseIf 補登上午_bt.Enabled = True And 補登下午_bt.Enabled = False And 公事出差_bt.Enabled = True And 漏打卡_bt.Enabled = False Then SQL1 = "UPDATE 人事漏打卡補登紀錄 SET 下午補登 = N'1' WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 LIKE '" & 請假日期_tb.Text & "')" End If End If CmdSet_For_dr() : conn.Close() ConnOpen() If 有無資料判別2 = "" Then If 補登上午_bt.Enabled = False And 補登下午_bt.Enabled = True Then SQL1 = "INSERT INTO 人事考勤明細表 (員工編號, 日期, 請假類別, 上午上班, 下午下班) SELECT N'" & 編號 & "',N'" & 請假日期_tb.Text & "',N'', N'" & ComboBox3.Text & ":" & ComboBox4.Text & ComboBox5.Text & ":" & ComboBox6.Text & ComboBox7.Text & "', N''" ElseIf 補登上午_bt.Enabled = True And 補登下午_bt.Enabled = False Then SQL1 = "INSERT INTO 人事考勤明細表 (員工編號, 日期, 請假類別, 上午上班, 下午下班) SELECT N'" & 編號 & "',N'" & 請假日期_tb.Text & "',N'', N'', N'" & ComboBox12.Text & ":" & ComboBox11.Text & ComboBox10.Text & ":" & ComboBox9.Text & ComboBox8.Text & "'" End If Else If 補登上午_bt.Enabled = False And 補登下午_bt.Enabled = True Then SQL1 = "UPDATE 人事考勤明細表 SET 上午上班 = N'" & ComboBox3.Text & ":" & ComboBox4.Text & ComboBox5.Text & ":" & ComboBox6.Text & ComboBox7.Text & "' WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 LIKE '" & 請假日期_tb.Text & "')" ElseIf 補登上午_bt.Enabled = True And 補登下午_bt.Enabled = False Then SQL1 = "UPDATE 人事考勤明細表 SET 下午下班 = N'" & ComboBox12.Text & ":" & ComboBox11.Text & ComboBox10.Text & ":" & ComboBox9.Text & ComboBox8.Text & "' WHERE (員工編號 LIKE '" & 編號 & "') AND (日期 LIKE '" & 請假日期_tb.Text & "')" End If End If CmdSet_For_dr() : conn.Close() Set_考勤明細() : MsgBox("補打卡成功") 漏打卡_bt.Enabled = True : 公事出差_bt.Enabled = True : 補登上午_bt.Enabled = True : 補登下午_bt.Enabled = True ComboBox12.Enabled = False : ComboBox11.Enabled = False : ComboBox10.Enabled = False : ComboBox9.Enabled = False : ComboBox8.Enabled = False ComboBox3.Enabled = False : ComboBox4.Enabled = False : ComboBox5.Enabled = False : ComboBox6.Enabled = False : ComboBox7.Enabled = False ComboBox3.SelectedIndex = 0 : ComboBox4.SelectedIndex = 0 : ComboBox5.SelectedIndex = 0 : ComboBox6.SelectedIndex = 0 : ComboBox7.SelectedIndex = 0 ComboBox8.SelectedIndex = 0 : ComboBox9.SelectedIndex = 0 : ComboBox10.SelectedIndex = 0 : ComboBox11.SelectedIndex = 0 : ComboBox12.SelectedIndex = 0 End If End Sub End Class