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