123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- Option Strict Off
- Public Class 人員考勤明細表
- Private ReadOnly ds, ds1, ds2 As New DataSet
- Private Sub Set_考勤明細()
- 明細_dgv.DataSource = Nothing : ds.Clear()
- 明細_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
- 明細_dgv.ColumnHeadersHeight = 25
- 明細_dgv.AllowUserToAddRows = False
- SQL_考勤明細清單()
- da.Fill(ds) : 明細_dgv.DataSource = ds.Tables(0) : conn.Close()
-
- 明細_dgv.Columns(0).FillWeight = 85 : 明細_dgv.Columns(1).FillWeight = 60 : 明細_dgv.Columns(2).FillWeight = 90 : 明細_dgv.Columns(3).FillWeight = 180
- 明細_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 = 150 : 明細_dgv.Columns(17).Visible = False
-
- Dim T, S, F, M, T1, S1, 上午, 下午, 漏打 As Integer
- Dim T2, S2, F2, M2 As String
- 當月育嬰假天數_tb.Text = "0" : 當月事假天數_tb.Text = "0" : 當月病假天數_tb.Text = "0" : 當月婚假天數_tb.Text = "0" : 當月特休天數_tb.Text = "0" : 當月喪假天數_tb.Text = "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:30: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 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
-
- T = 上午 \ 86400 : T1 = 上午 Mod 86400 : S = T1 \ 3600 : S1 = T1 Mod 3600 : F = S1 \ 60 : M = S1 Mod 60
- If S = 0 Then : S2 = "" : Else : S2 = T * 24 + S & "時" : End If : If F = 0 Then : F2 = "" : Else : F2 = F & "分" : End If : M2 = M & "秒"
- 當月上午上班總工時_tb.Text = S2 & F2 & M2
-
- T = 下午 \ 86400 : T1 = 下午 Mod 86400 : S = T1 \ 3600 : S1 = T1 Mod 3600 : F = S1 \ 60 : M = S1 Mod 60
- If S = 0 Then : S2 = "" : Else : S2 = T * 24 + S & "時" : End If : If F = 0 Then : F2 = "" : Else : F2 = F & "分" : End If : M2 = M & "秒"
- 當月下午上班總工時_tb.Text = S2 & F2 & M2
-
- T = (上午 + 下午) \ 86400 : T1 = (上午 + 下午) Mod 86400 : S = T1 \ 3600 : S1 = T1 Mod 3600 : F = S1 \ 60 : M = S1 Mod 60
- If S = 0 Then : S2 = "" : Else : S2 = T * 24 + S & "時" : End If : If F = 0 Then : F2 = "" : Else : F2 = F & "分" : End If : M2 = M & "秒"
- 當月上班總工時_tb.Text = S2 & F2 & M2
-
- If 明細_dgv.Rows(i).Cells("日期").Value < Today() Then
- If 明細_dgv.Rows(i).Cells("星期").Value.ToString = "星期日" Or 明細_dgv.Rows(i).Cells("星期").Value.ToString = "星期六" Then
- ElseIf 明細_dgv.Rows(i).Cells("請假類別").Value.ToString <> "" Then
- Else
- If 明細_dgv.Rows(i).Cells("上午上班").Value.ToString = "" Then : 漏打 += 1 : End If
- If 明細_dgv.Rows(i).Cells("下午下班").Value.ToString = "" Then : 漏打 += 1 : End If
- End If
- End If
- If 明細_dgv.Rows(i).Cells("上午補登").Value.ToString = "1" Then : 漏打 += 1 : End If
- If 明細_dgv.Rows(i).Cells("下午補登").Value.ToString = "1" Then : 漏打 += 1 : End If
- 當月漏打卡次數_tb.Text = 漏打
-
- If 明細_dgv.Rows(i).Cells("請假類別").Value.ToString = "育嬰假一天" Then : 當月育嬰假天數_tb.Text = Val(當月育嬰假天數_tb.Text) + 1
- ElseIf 明細_dgv.Rows(i).Cells("請假類別").Value.ToString = "育嬰假半天" Then : 當月育嬰假天數_tb.Text = Val(當月育嬰假天數_tb.Text) + 0.5
- End If
- If 明細_dgv.Rows(i).Cells("請假類別").Value.ToString = "事假一天" Then : 當月事假天數_tb.Text = Val(當月事假天數_tb.Text) + 1
- ElseIf 明細_dgv.Rows(i).Cells("請假類別").Value.ToString = "事假半天" Then : 當月事假天數_tb.Text = Val(當月事假天數_tb.Text) + 0.5
- End If
- If 明細_dgv.Rows(i).Cells("請假類別").Value.ToString = "病假一天" Then : 當月病假天數_tb.Text = Val(當月病假天數_tb.Text) + 1
- ElseIf 明細_dgv.Rows(i).Cells("請假類別").Value.ToString = "病假半天" Then : 當月病假天數_tb.Text = Val(當月病假天數_tb.Text) + 0.5
- End If
- If 明細_dgv.Rows(i).Cells("請假類別").Value.ToString = "婚嫁一天" Then : 當月婚假天數_tb.Text = Val(當月婚假天數_tb.Text) + 1
- ElseIf 明細_dgv.Rows(i).Cells("請假類別").Value.ToString = "婚嫁半天" Then : 當月婚假天數_tb.Text = Val(當月婚假天數_tb.Text) + 0.5
- End If
- If 明細_dgv.Rows(i).Cells("請假類別").Value.ToString = "特休一天" Then : 當月特休天數_tb.Text = Val(當月特休天數_tb.Text) + 1
- ElseIf 明細_dgv.Rows(i).Cells("請假類別").Value.ToString = "特休半天" Then : 當月特休天數_tb.Text = Val(當月特休天數_tb.Text) + 0.5
- End If
- If 明細_dgv.Rows(i).Cells("請假類別").Value.ToString = "喪假一天" Then : 當月喪假天數_tb.Text = Val(當月喪假天數_tb.Text) + 1
- ElseIf 明細_dgv.Rows(i).Cells("請假類別").Value.ToString = "喪假半天" Then : 當月喪假天數_tb.Text = Val(當月喪假天數_tb.Text) + 0.5
- End If
- Next : WINPROFIT_ERP_SYS.ToolStripProgressBar1.Value = 0 : 最終數 = 0
- End Sub
- Private Sub Set_人員清單()
- 員工_dgv.DataSource = Nothing : ds1.Clear()
- 員工_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
- 員工_dgv.ColumnHeadersHeight = 25
- 員工_dgv.AllowUserToAddRows = False
- SQL_員工清單()
- da.Fill(ds1) : 員工_dgv.DataSource = ds1.Tables(0) : conn.Close()
-
- 員工_dgv.Columns(0).Visible = False : 員工_dgv.Columns(1).FillWeight = 150 : 員工_dgv.Columns(2).Visible = False : 員工_dgv.Columns(3).Visible = False
- 員工_dgv.Columns(4).Visible = False
- End Sub
- Private Sub Set_年度考勤明細()
- 日期1_dgv.DataSource = Nothing : ds2.Clear()
- 日期1_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
- 日期1_dgv.ColumnHeadersHeight = 25
- 日期1_dgv.AllowUserToAddRows = False
- SQL_年度考勤明細清單()
- da.Fill(ds2) : 日期1_dgv.DataSource = ds2.Tables(0) : conn.Close() : Set_grid2()
- End Sub
- Private Sub Set_grid2()
- Dim 漏打 As Integer = 0
- 年度育嬰假天數_tb.Text = "0" : 年度事假天數_tb.Text = "0" : 年度病假天數_tb.Text = "0" : 年度婚假天數_tb.Text = "0" : 年度特休天數_tb.Text = "0" : 年度喪假天數_tb.Text = "0"
- For i As Integer = 0 To 日期1_dgv.Rows.Count - 1
- 資料數 = 日期1_dgv.Rows.Count : MyModule1.進度條()
- If 日期1_dgv.Rows(i).Cells("日期").Value < Today() Then
- If 日期1_dgv.Rows(i).Cells("星期").Value.ToString = "星期日" Or 日期1_dgv.Rows(i).Cells("星期").Value.ToString = "星期六" Then
- ElseIf 日期1_dgv.Rows(i).Cells("請假類別").Value.ToString <> "" Then
- Else
- If 日期1_dgv.Rows(i).Cells("上午上班").Value.ToString = "" Then : 漏打 += 1 : End If
- If 日期1_dgv.Rows(i).Cells("下午下班").Value.ToString = "" Then : 漏打 += 1 : End If
- End If
- End If
- If 日期1_dgv.Rows(i).Cells("上午補登").Value.ToString = "1" Then : 漏打 += 1 : End If
- If 日期1_dgv.Rows(i).Cells("下午補登").Value.ToString = "1" Then : 漏打 += 1 : End If
- 年度漏打卡次數_tb.Text = 漏打
-
- If 日期1_dgv.Rows(i).Cells("請假類別").Value.ToString = "育嬰假一天" Then : 年度育嬰假天數_tb.Text = Val(年度育嬰假天數_tb.Text) + 1
- ElseIf 日期1_dgv.Rows(i).Cells("請假類別").Value.ToString = "育嬰假半天" Then : 年度育嬰假天數_tb.Text = Val(年度育嬰假天數_tb.Text) + 0.5
- End If
- If 日期1_dgv.Rows(i).Cells("請假類別").Value.ToString = "事假一天" Then : 年度事假天數_tb.Text = Val(年度事假天數_tb.Text) + 1
- ElseIf 日期1_dgv.Rows(i).Cells("請假類別").Value.ToString = "事假半天" Then : 年度事假天數_tb.Text = Val(年度事假天數_tb.Text) + 0.5
- End If
- If 日期1_dgv.Rows(i).Cells("請假類別").Value.ToString = "病假一天" Then : 年度病假天數_tb.Text = Val(年度病假天數_tb.Text) + 1
- ElseIf 日期1_dgv.Rows(i).Cells("請假類別").Value.ToString = "病假半天" Then : 年度病假天數_tb.Text = Val(年度病假天數_tb.Text) + 0.5
- End If
- If 日期1_dgv.Rows(i).Cells("請假類別").Value.ToString = "婚嫁一天" Then : 年度婚假天數_tb.Text = Val(年度婚假天數_tb.Text) + 1
- ElseIf 日期1_dgv.Rows(i).Cells("請假類別").Value.ToString = "婚嫁半天" Then : 年度婚假天數_tb.Text = Val(年度婚假天數_tb.Text) + 0.5
- End If
- If 日期1_dgv.Rows(i).Cells("請假類別").Value.ToString = "特休一天" Then : 年度特休天數_tb.Text = Val(年度特休天數_tb.Text) + 1
- ElseIf 日期1_dgv.Rows(i).Cells("請假類別").Value.ToString = "特休半天" Then : 年度特休天數_tb.Text = Val(年度特休天數_tb.Text) + 0.5
- End If
- If 日期1_dgv.Rows(i).Cells("請假類別").Value.ToString = "喪假一天" Then : 年度喪假天數_tb.Text = Val(年度喪假天數_tb.Text) + 1
- ElseIf 日期1_dgv.Rows(i).Cells("請假類別").Value.ToString = "喪假半天" Then : 年度喪假天數_tb.Text = Val(年度喪假天數_tb.Text) + 0.5
- End If
- Next : WINPROFIT_ERP_SYS.ToolStripProgressBar1.Value = 0 : 最終數 = 0
- End Sub
- Private Sub ComboBox1下拉表單資料載入()
- SQL_年份查詢()
- 年份_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 = WINPROFIT_ERP_SYS : Me.WindowState = 2 : Me.AutoScroll = True
- Set_人員清單() : ComboBox1下拉表單資料載入() : 日期1_dgv.Visible = False
- 年份_cb.Text = Year(Today) : 月份_cb.SelectedIndex = Month(Today) - 1
- 當月育嬰假天數_tb.Text = "0" : 當月事假天數_tb.Text = "0" : 當月病假天數_tb.Text = "0" : 當月婚假天數_tb.Text = "0" : 當月特休天數_tb.Text = "0" : 當月喪假天數_tb.Text = "0"
- 年度育嬰假天數_tb.Text = "0" : 年度事假天數_tb.Text = "0" : 年度病假天數_tb.Text = "0" : 年度婚假天數_tb.Text = "0" : 年度特休天數_tb.Text = "0" : 年度喪假天數_tb.Text = "0"
- 明細_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6)
- 員工_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6)
- End Sub
- Private Sub DataGridView2_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles 員工_dgv.CellClick
- If e.RowIndex = -1 Then : Else
- 編號 = 員工_dgv(0, e.RowIndex).Value.ToString : Set_年度考勤明細() : Set_考勤明細() : 入職日期_dtp.Value = 員工_dgv(3, e.RowIndex).Value.ToString
- Dim TSFM As Integer = DateDiff("d", 入職日期_dtp.Value, Today()) : 在職天數_tb.Text = TSFM
- End If
- End Sub
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles 重新讀取_bt.Click
- Set_考勤明細()
- Set_年度考勤明細()
- End Sub
- End Class
|