123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- Option Strict Off
- Imports System.IO
- Public Class 考勤打卡
- Dim RI As Integer = -1
- Dim SK As String = "要查找的 KEY"
- Dim Str As String = System.Windows.Forms.Application.StartupPath
- DIM 對話框(33) As String
- Dim 時段(6) As String
- Private Sub Set_語言()
- 語言_dgv.DataSource = Nothing
- 語言_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
- 語言_dgv.ColumnHeadersHeight = 25 : 語言_dgv.AllowUserToAddRows = False
- For i As Integer = 0 To 語言_dgv.Rows.Count - 1 : 語言_dgv.Rows.RemoveAt(0) : Next
- If File.Exists(Str + "\LANGUAGE_FILE.csv") Then
- Dim filereader = My.Computer.FileSystem.OpenTextFileReader(Str + "\LANGUAGE_FILE.csv", System.Text.Encoding.Default)
- Dim line As String = filereader.ReadLine()
- While Not (line Is Nothing)
- line = filereader.ReadLine()
- If line <> Nothing Then
- line = line.Replace("""", "")
- If Strings.Left(line, 4) = "G000" Or Strings.Left(line, 4) = 介面 Then
- If 系統語言 = "繁體中文" Then
- If Strings.Mid(line, 10, 2) = "CH" Then : 語言_dgv.Rows.Insert(0)
- 語言_dgv.Rows(0).Cells(0).Value = Strings.Left(line, 11)
- If Strings.Mid(line, 13, 300).EndsWith(",") Then
- 語言_dgv.Rows(0).Cells(1).Value = Strings.Mid(line, 13, 300).Substring(0, Strings.Mid(line, 13, 300).Length - 1)
- Else : 語言_dgv.Rows(0).Cells(1).Value = Strings.Mid(line, 13, 300) : End If
- End If
- ElseIf 系統語言 = "English" Then
- If Strings.Mid(line, 10, 2) = "EN" Then : 語言_dgv.Rows.Insert(0)
- 語言_dgv.Rows(0).Cells(0).Value = Strings.Left(line, 11)
- If Strings.Mid(line, 13, 300).EndsWith(",") Then
- 語言_dgv.Rows(0).Cells(1).Value = Strings.Mid(line, 13, 300).Substring(0, Strings.Mid(line, 13, 300).Length - 1)
- Else : 語言_dgv.Rows(0).Cells(1).Value = Strings.Mid(line, 13, 300) : End If
- End If
- ElseIf 系統語言 = "Indonesian" Then
- If Strings.Mid(line, 10, 2) = "IN" Then : 語言_dgv.Rows.Insert(0)
- 語言_dgv.Rows(0).Cells(0).Value = Strings.Left(line, 11)
- If Strings.Mid(line, 13, 300).EndsWith(",") Then
- 語言_dgv.Rows(0).Cells(1).Value = Strings.Mid(line, 13, 300).Substring(0, Strings.Mid(line, 13, 300).Length - 1)
- Else : 語言_dgv.Rows(0).Cells(1).Value = Strings.Mid(line, 13, 300) : End If
- End If
- End If
- End If
- End If
- End While
- filereader.Close()
- End If
- End Sub
- Private Sub Set_語言查詢()
- RI = -1 : For Each row As DataGridViewRow In 語言_dgv.Rows
- If Strings.Left(row.Cells(0).Value.ToString(), 8) = SK Then
- RI = row.Index : Exit For
- End If
- Next
- End Sub
- Private Sub 語言轉換讀取()
- Set_語言()
- SK = "H608-100" : Set_語言查詢() : Me.Text = 語言_dgv(1, RI).Value.ToString : SK = "H608-101" : Set_語言查詢() : Label8.Text = 語言_dgv(1, RI).Value.ToString
- SK = "H608-102" : Set_語言查詢() : 對話框(0) = 語言_dgv(1, RI).Value.ToString : SK = "H608-103" : Set_語言查詢() : Label15.Text = 語言_dgv(1, RI).Value.ToString
- SK = "H608-104" : Set_語言查詢() : Label9.Text = 語言_dgv(1, RI).Value.ToString : SK = "H608-105" : Set_語言查詢() : Label13.Text = 語言_dgv(1, RI).Value.ToString
- SK = "H608-106" : Set_語言查詢() : Label17.Text = 語言_dgv(1, RI).Value.ToString : SK = "H608-107" : Set_語言查詢() : Label11.Text = 語言_dgv(1, RI).Value.ToString
- SK = "H608-108" : Set_語言查詢() : Label1.Text = 語言_dgv(1, RI).Value.ToString : SK = "H608-109" : Set_語言查詢() : 對話框(1) = 語言_dgv(1, RI).Value.ToString
- SK = "H608-110" : Set_語言查詢() : 對話框(2) = 語言_dgv(1, RI).Value.ToString : SK = "H608-111" : Set_語言查詢() : 對話框(3) = 語言_dgv(1, RI).Value.ToString
- SK = "H608-112" : Set_語言查詢() : 對話框(4) = 語言_dgv(1, RI).Value.ToString : SK = "H608-113" : Set_語言查詢() : 對話框(5) = 語言_dgv(1, RI).Value.ToString
- SK = "H608-114" : Set_語言查詢() : 對話框(6) = 語言_dgv(1, RI).Value.ToString
- End Sub
- Private Sub Panel1_Paint(sender As Object, e As PaintEventArgs) Handles Panel1.Paint
- End Sub
- Private Sub 考勤打卡_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- 風格() : 計算分流.Enabled = True : Panel2.SendToBack() : Panel3.BringToFront() : 打卡啟動_tb.SendToBack() ': Me.WindowState = 2
- 介面 = "H608" : 語言轉換讀取() : 顯示說明(999, False)
- End Sub
- Private Sub 計算分流_Tick(sender As Object, e As EventArgs) Handles 計算分流.Tick
- 計算分流.Enabled = False
- 年_lb.Text = Year(Today) : 月_lb.Text = Month(Today) : 日_lb.Text = Strings.Right(Format(Today(), "yyyy/MM/dd"), 2) : 時_lb.Text = Format(TimeOfDay(), "HH:mm:ss")
- '--------------辦公室人員適用-------------------------------------------------------------------------
- 時段標示_lb.Text = "" : Label16.Text = "" : Label18.Text = "" : 上班時間_lb.Text = "" : 下班時間_lb.Text = "" : 說明_lb.Text = 對話框(0)
- 系統時鐘.Enabled = True : 打卡啟動_tb.Focus() : Panel3.SendToBack()
- End Sub
- Private Sub 五秒重製_Tick(sender As Object, e As EventArgs) Handles 五秒重製.Tick
- Label16.Text = "" : Label18.Text = "" : 上班時間_lb.Text = "" : 下班時間_lb.Text = "" : 時段標示_lb.Text = "" : 說明_lb.Text = 對話框(0) : 大頭照_pb.Image = Nothing
- 五秒重製.Enabled = False
- End Sub
- Private Sub 系統時鐘_Tick(sender As Object, e As EventArgs) Handles 系統時鐘.Tick
- 年_lb.Text = Year(Today) : 月_lb.Text = Month(Today) : 日_lb.Text = Strings.Right(Format(Today(), "yyyy/MM/dd"), 2) : 時_lb.Text = Format(TimeOfDay(), "HH:mm:ss")
- End Sub
- Private Sub Cancel_bt_Click(sender As Object, e As EventArgs) Handles Cancel_bt.Click
- Me.Close()
- End Sub
- Private Sub 打卡啟動_tb_TextChanged(sender As Object, e As EventArgs) Handles 打卡啟動_tb.TextChanged
- If 打卡啟動_tb.Text <> "" Then
- 上班時間_lb.Text = "" : 下班時間_lb.Text = ""
- End If
- 年_lb.Text = Year(Today) : 月_lb.Text = Month(Today) : 日_lb.Text = Strings.Right(Format(Today(), "yyyy/MM/dd"), 2) : 時_lb.Text = Format(TimeOfDay(), "HH:mm:ss")
-
- If 打卡啟動_tb.Text.Length = 10 Then
- Label16.Text = "" : Label18.Text = "" : 上班時間_lb.Text = "" : 下班時間_lb.Text = "" : 時段標示_lb.Text = "" : 說明_lb.Text = 對話框(0) : 大頭照_pb.Image = Nothing
- 五秒重製.Enabled = False
- SQL_打卡人員資料讀取()
- If dr.Read() Then
- Label16.Text = dr("姓名").ToString : PA5 = dr("帳號").ToString
- Dim 驗證 As String = "" : Dim 取變數 As String
- 取變數 = dr("職稱").ToString : NN1 = 0
- For ii As Integer = 1 To 20
- If ii = 1 Then : 驗證 = Strings.Left(取變數, ii) : NN1 += 1 : Else
- If Strings.Mid(取變數, ii, 1) = "/" Then : Exit For : Else : 驗證 &= Strings.Mid(取變數, ii, 1) : NN1 += 1 : End If
- End If
- Next
- If 系統語言 = "繁體中文" Then : Label18.Text = 驗證 : Else
- If Strings.Left(dr("職稱").ToString, 6) = "00000." Then : Label18.Text = "00000.NA" : Else
- Label18.Text = Strings.Left(dr("職稱").ToString, 6) & Strings.Mid(dr("職稱").ToString, NN1 + 2, 100)
- End If
- End If
- 五秒重製.Enabled = False
- Me.打卡_bt.PerformClick()
- Else
- 說明_lb.Text = 對話框(6) : 五秒重製.Enabled = True
- 打卡啟動_tb.Text = "" : 打卡啟動_tb.Focus() : conn.Close()
- End If
- End If
- End Sub
- Private Sub Set_日期格式轉換()
- DTP = Format(Today(), "yyyy/MM/dd")
- End Sub
- Private Sub 打卡_bt_Click(sender As Object, e As EventArgs) Handles 打卡_bt.Click
- 時_lb.Text = Format(TimeOfDay(), "HH:mm:ss")
- 說明_lb.Text = 對話框(0)
-
- 大頭照_pb.Image = Nothing : SQL_人員資料讀取5()
- If dr.Read() = True Then : 圖片庫 = dr("照片位置").ToString : SQL_連線字串_圖片資料庫() : SQL_人員資料讀取0()
- While dr.Read() = True
- If dr("圖片").ToString = Nothing Then : Else
- Dim unused As Byte() = New Byte(-1) {}
- Dim bytes As Byte() = DirectCast(dr.Item("圖片"), Byte())
- Dim oStream As New MemoryStream(bytes)
- 大頭照_pb.Image = Bitmap.FromStream(oStream)
- End If
- End While : 大頭照_pb.SizeMode = 4
- End If : conn.Close()
-
- For I As Integer = 1 To 6 : 時段(I) = "" : Next
- Dim 下班卡 As Boolean : Set_日期格式轉換() : SQL_打卡人員明細讀取()
- If dr.Read() Then
- 時段(1) = dr("第一").ToString : 時段(2) = dr("第二").ToString : 時段(3) = dr("第三").ToString
- 時段(4) = dr("第四").ToString : 時段(5) = dr("第五").ToString : 時段(6) = dr("第六").ToString
-
- '--------------上下班卡顯示------------------------------------------------------
- If dr("第一").ToString <> "" Then : 上班時間_lb.Text = dr("第一").ToString : 下班卡 = True
- Else : 上班時間_lb.Text = Format(TimeOfDay(), "HH:mm:ss") : 下班卡 = False : End If
- If 下班卡 = False Then : 下班時間_lb.Text = "" : Else : 下班時間_lb.Text = Format(TimeOfDay(), "HH:mm:ss") : End If
- '--------------今天第二次以上打卡------------------------------------------------
- If 時段(1) = "" And 時段(2) = "" And 時段(3) = "" And 時段(4) = "" And 時段(5) = "" And 時段(6) = "" Then
- SQL2 = "第一" : PA45 = Strings.Format(TimeOfDay(), "HH:mm:ss").Replace(".", ":") : SQL_打卡紀錄寫入()
- 說明_lb.Text = 對話框(1) : 時段標示_lb.Text = 對話框(4) & " 1 " & 對話框(5)
- ElseIf 時段(1) <> "" And 時段(2) = "" And 時段(3) = "" And 時段(4) = "" And 時段(5) = "" And 時段(6) = "" Then
- '----比對是否一個小時內重複打卡----------------------------------------------
- PA1 = 時段(1) : 時間比對() : If PA2 = "重複" Then : 說明_lb.Text = 對話框(2)
- Else : SQL2 = "第二" : PA45 = Strings.Format(TimeOfDay(), "HH:mm:ss").Replace(".", ":") : SQL_打卡紀錄寫入()
- 說明_lb.Text = 對話框(1) : 時段標示_lb.Text = 對話框(4) & " 2 " & 對話框(5) : End If
- ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) = "" And 時段(4) = "" And 時段(5) = "" And 時段(6) = "" Then
- '----比對是否一個小時內重複打卡----------------------------------------------
- PA1 = 時段(2) : 時間比對() : If PA2 = "重複" Then : 說明_lb.Text = 對話框(2)
- Else : SQL2 = "第三" : PA45 = Strings.Format(TimeOfDay(), "HH:mm:ss").Replace(".", ":") : SQL_打卡紀錄寫入()
- 說明_lb.Text = 對話框(1) : 時段標示_lb.Text = 對話框(4) & " 3 " & 對話框(5) : End If
- ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) <> "" And 時段(4) = "" And 時段(5) = "" And 時段(6) = "" Then
- '----比對是否一個小時內重複打卡----------------------------------------------
- PA1 = 時段(3) : 時間比對() : If PA2 = "重複" Then : 說明_lb.Text = 對話框(2)
- Else : SQL2 = "第四" : PA45 = Strings.Format(TimeOfDay(), "HH:mm:ss").Replace(".", ":") : SQL_打卡紀錄寫入()
- 說明_lb.Text = 對話框(1) : 時段標示_lb.Text = 對話框(4) & " 4 " & 對話框(5) : End If
- ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) <> "" And 時段(4) <> "" And 時段(5) = "" And 時段(6) = "" Then
- '----比對是否一個小時內重複打卡----------------------------------------------
- PA1 = 時段(4) : 時間比對() : If PA2 = "重複" Then : 說明_lb.Text = 對話框(2)
- Else : SQL2 = "第五" : PA45 = Strings.Format(TimeOfDay(), "HH:mm:ss").Replace(".", ":") : SQL_打卡紀錄寫入()
- 說明_lb.Text = 對話框(1) : 時段標示_lb.Text = 對話框(4) & " 5 " & 對話框(5) : End If
- ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) <> "" And 時段(4) <> "" And 時段(5) <> "" And 時段(6) = "" Then
- '----比對是否一個小時內重複打卡----------------------------------------------
- PA1 = 時段(5) : 時間比對() : If PA2 = "重複" Then : 說明_lb.Text = 對話框(2)
- Else : SQL2 = "第六" : PA45 = Strings.Format(TimeOfDay(), "HH:mm:ss").Replace(".", ":") : SQL_打卡紀錄寫入()
- 說明_lb.Text = 對話框(1) : 時段標示_lb.Text = 對話框(4) & " 6 " & 對話框(5) : End If
- ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) <> "" And 時段(4) <> "" And 時段(5) <> "" And 時段(6) <> "" Then
- 說明_lb.Text = 對話框(3)
- End If
- Else
- '--------------上下班卡顯示------------------------------------------------------
- 上班時間_lb.Text = Format(TimeOfDay(), "HH:mm:ss") : 下班時間_lb.Text = ""
- '--------------今天第一次打卡----------------------------------------------------
- PA45 = Strings.Format(TimeOfDay(), "HH:mm:ss").Replace(".", ":")
- SQL_打卡第一格() : 說明_lb.Text = 對話框(1) : 時段標示_lb.Text = 對話框(4) & " 1 " & 對話框(5)
- End If : conn.Close()
- 打卡啟動_tb.Text = "" : 打卡啟動_tb.Focus() : 五秒重製.Enabled = True
- End Sub
- Private Sub 時間比對()
- Dim dateA As Date = Date.ParseExact("[" & PA1 & "]", "[HH:mm:ss]", Nothing)
- Dim dateB As Date = Date.ParseExact("[" & Format(TimeOfDay(), "HH:mm:ss") & "]", "[HH:mm:ss]", Nothing)
- Dim hoursDiff As Integer = DateDiff(DateInterval.Minute, dateA, dateB)
- If Math.Abs(hoursDiff) <= 40 Then : PA2 = "重複" : Else : PA2 = "可行" : End If
- End Sub
-
- Private Sub 風格()
- If 深色風格 = False Then
- Panel1.BackgroundImage = My.Resources._62951168976601486 : Panel3.BackgroundImage = My.Resources._62951168976601486
- '--------------黑色-------------------------------------------
- Label1.ForeColor = Color.Black
- '--------------紅色-------------------------------------------
- Label8.ForeColor = Color.Red : 年_lb.ForeColor = Color.Red : Label2.ForeColor = Color.Red : 月_lb.ForeColor = Color.Red
- Label4.ForeColor = Color.Red : 日_lb.ForeColor = Color.Red : Label6.ForeColor = Color.Red : 時_lb.ForeColor = Color.Red
- '--------------藍色-------------------------------------------
- Label15.ForeColor = Color.Blue : Label17.ForeColor = Color.Blue : Label9.ForeColor = Color.Blue : Label13.ForeColor = Color.Blue
- Label16.ForeColor = Color.Blue : Label18.ForeColor = Color.Blue : 上班時間_lb.ForeColor = Color.Blue : 時段標示_lb.ForeColor = Color.Blue
- Label11.ForeColor = Color.Blue : 下班時間_lb.ForeColor = Color.Blue : 說明_lb.ForeColor = Color.Blue
- Else
- Panel1.BackgroundImage = My.Resources._20157059_MotionElements_diagonal_lines : Panel3.BackgroundImage = My.Resources._20157059_MotionElements_diagonal_lines
- '--------------黑色-------------------------------------------
- Label1.ForeColor = Color.White
- '--------------紅色-------------------------------------------
- Label8.ForeColor = Color.LightPink : 年_lb.ForeColor = Color.LightPink : Label2.ForeColor = Color.LightPink : 月_lb.ForeColor = Color.LightPink
- Label4.ForeColor = Color.LightPink : 日_lb.ForeColor = Color.LightPink : Label6.ForeColor = Color.LightPink : 時_lb.ForeColor = Color.LightPink
- '--------------藍色-------------------------------------------
- Label15.ForeColor = Color.LightBlue : Label17.ForeColor = Color.LightBlue : Label9.ForeColor = Color.LightBlue : Label13.ForeColor = Color.LightBlue
- Label16.ForeColor = Color.LightBlue : Label18.ForeColor = Color.LightBlue : 上班時間_lb.ForeColor = Color.LightBlue : 時段標示_lb.ForeColor = Color.LightBlue
- Label11.ForeColor = Color.LightBlue : 下班時間_lb.ForeColor = Color.LightBlue : 說明_lb.ForeColor = Color.LightBlue
- End If
- End Sub
- End Class
|