123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- Option Strict Off
- Public Class 人事請假核准
- ReadOnly ds As New DataSet : ReadOnly 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 萬年曆.日期, 萬年曆.星期, AA.請假類別, 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 N'" & 編號 & "') AND (日期 LIKE N'" & ComboBox1.Text & "/" & ComboBox2.Text & "%')) AS AA ON 萬年曆.日期 = AA.日期
- LEFT OUTER JOIN
- (SELECT 員工編號, 日期, 請假類別, 上午上班, 下午下班
- FROM 人事考勤明細表
- WHERE (員工編號 LIKE N'" & 編號 & "') AND (日期 LIKE N'" & ComboBox1.Text & "/" & ComboBox2.Text & "%')) AS QQ ON 萬年曆.日期 = QQ.日期
- LEFT OUTER JOIN
- (SELECT 員工編號, 日期, 上午補登, 下午補登, 公出事由
- FROM 人事漏打卡補登紀錄
- WHERE (員工編號 LIKE N'" & 編號 & "') AND (日期 LIKE N'" & ComboBox1.Text & "/" & ComboBox2.Text & "%')) AS BB ON 萬年曆.日期 = BB.日期
- WHERE (萬年曆.日期 LIKE N'" & 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 N'在職')
- 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 ComboBox3下拉表單資料載入()
- conn.Close()
- ConnOpen()
- SQL1 = "SELECT 請假類別 FROM GCM請假類別 ORDER BY 請假類別 DESC"
- CmdSet_For_dr()
- 請假類別_CB.Items.Clear()
- While (dr.Read()) : 請假類別_CB.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
- Set_人員清單() : ComboBox1下拉表單資料載入() : ComboBox3下拉表單資料載入()
- ComboBox1.Text = Year(Today) : ComboBox2.SelectedIndex = Month(Today) - 1
- If CC(49) = True Or gUserName = "李協叡" Then
- DataGridView2.Enabled = True
- Else
- DataGridView2.Enabled = False
- 編號 = 員工編號 : Set_考勤明細()
- TextBox2.Text = 員工編號 : TextBox1.Text = gUserName : TextBox3.Text = 登入人部門
- End If
- End Sub
- Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles 明細_DGV.CellClick
- If e.RowIndex = -1 Then : Else
- TextBox4.Text = 明細_DGV(0, e.RowIndex).Value.ToString : 請假類別_CB.Text = 明細_DGV(2, e.RowIndex).Value.ToString : TextBox5.Text = 明細_DGV(3, 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 : TextBox2.Text = DataGridView2(0, e.RowIndex).Value.ToString
- DateTimePicker1.Value = DataGridView2(3, e.RowIndex).Value.ToString : TextBox1.Text = DataGridView2(1, e.RowIndex).Value.ToString
-
- Set_考勤明細()
-
- Dim TSFM As Integer = DateDiff("d", DateTimePicker1.Value, Today()) : TextBox18.Text = TSFM
-
- ConnOpen()
- SQL1 = "SELECT 部門 FROM 使用者權限管理表 WHERE (員工編號 = '" & 編號 & "')"
- cmd.Connection = conn : cmd.CommandText = SQL1 : dr = cmd.ExecuteReader
- If dr.Read() Then
- TextBox3.Text = dr("部門").ToString
- End If
- conn.Close()
- End If
- End Sub
- Private Sub Set_日期格式轉換()
- DTP = Format(Today(), "yyyy/MM/dd")
- End Sub
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- If TextBox1.Text = "" Or TextBox4.Text = "" Or TextBox5.Text = "" Or 請假類別_CB.Text = "" Then
- MsgBox("請檢查資料是否有填選完畢")
- Else
- Set_日期格式轉換()
- ConnOpen()
- SQL1 = "UPDATE 人事請假單 SET 核准人 = N'" & gUserName & "', 核准日期 = N'" & DTP & "', 是否生效 = N'已核准' WHERE (員工編號 LIKE N'" & 編號 & "') AND (日期 LIKE N'" & TextBox4.Text & "%')"
- cmd.CommandText = SQL1 : cmd.ExecuteNonQuery() : conn.Close() : conn.Close()
-
- Dim 有無資料判別 As String = ""
- ConnOpen()
- SQL1 = "SELECT 員工編號 FROM 人事考勤明細表 WHERE 員工編號 LIKE N'" & 編號 & "' AND 日期 LIKE N'" & TextBox4.Text & "'"
- cmd.Connection = conn : cmd.CommandText = SQL1 : dr = cmd.ExecuteReader
- If dr.Read() Then : 有無資料判別 = dr("員工編號").ToString : End If : conn.Close()
-
- If 有無資料判別 = "" Then
- ConnOpen()
- SQL1 = "INSERT INTO 人事考勤明細表 (員工編號, 日期, 請假類別, 上午上班, 下午下班)
- SELECT N'" & 編號 & "',N'" & TextBox4.Text & "',N'" & 請假類別_CB.Text & "','',''"
- CmdSet_For_dr() : conn.Close()
- Else
- ConnOpen()
- SQL1 = "UPDATE 人事考勤明細表 SET 請假類別 = N'" & 請假類別_CB.Text & "'
- WHERE (員工編號 LIKE N'" & 編號 & "') AND (日期 LIKE N'" & TextBox4.Text & "')"
- cmd.CommandText = SQL1 : cmd.ExecuteNonQuery() : conn.Close() : conn.Close()
- End If
- Set_考勤明細()
- MsgBox("核准完成")
- End If
- End Sub
- End Class
|