Module SQL_考勤系統 Friend Sub SQL_補打卡申請(員工編號 As String, 日期 As String) ConnOpen() SQL1 = "SELECT 補打卡申請.日期, 補打卡申請.狀態, 補打卡申請.事由紀錄, 補打卡申請.是否生效, 補打卡申請.員工編號, ras_Users.UserName AS 姓名 FROM 補打卡申請 INNER JOIN ras_Users ON 補打卡申請.員工編號 = ras_Users.DIN WHERE (補打卡申請.員工編號 LIKE N'" & 員工編號 & "') AND (補打卡申請.日期 LIKE N'" & 日期 & "%') ORDER BY 補打卡申請.日期 DESC" CmdSet_For_DGV() End Sub Friend Sub SQL_補打卡申請查詢(員工編號 As String, 日期 As String) ConnOpen() SQL1 = "SELECT 員工編號, 日期 FROM 補打卡申請 WHERE (員工編號 LIKE N'" & 員工編號 & "' AND 日期 LIKE N'" & 日期 & "')" CmdSet_For_dr() End Sub Friend Sub SQL_補打卡申請新增(員工編號 As String, 日期 As String, 狀態 As String, 事由紀錄 As String) ConnOpen() SQL1 = "INSERT INTO 補打卡申請 (員工編號, 日期, 狀態, 事由紀錄, 是否生效, 核准人1, 核准人2, 圖片資料庫, 圖片編號) VALUES (N'" & 員工編號 & "',N'" & 日期 & "', N'" & 狀態 & "' , N'" & 事由紀錄 & "','申請中', N'', N'', N'', N'')" CmdSet_For_dr() End Sub Friend Sub SQL_補打卡申請修改(員工編號 As String, 日期 As String, 狀態 As String, 事由紀錄 As String) ConnOpen() SQL1 = "UPDATE 補打卡申請 SET 狀態 = N'" & 狀態 & "', 事由紀錄 = N'" & 事由紀錄 & "' WHERE 日期 LIKE N'" & 日期 & "' AND 員工編號 = " & 員工編號 & "" CmdSet_For_dr() End Sub Friend Sub SQL_補打卡申請刪除(員工編號 As String, 日期 As String) ConnOpen() SQL1 = "DELETE FROM 補打卡申請 WHERE 日期 LIKE N'" & 日期 & "' AND 員工編號 = " & 員工編號 & "" CmdSet_For_dr() End Sub Friend Sub SQL_補打卡申請核准(員工編號 As String, 日期 As String, 審核人1 As String, 審核人2 As String) ConnOpen() SQL1 = "UPDATE 補打卡申請 SET 核准人1 = N'" & 審核人1 & "', 核准人2 = N'" & 審核人2 & "', 是否生效 = N'" & PA & "', 核准日期1 = N'" & PA1 & "', 核准日期2 = N'" & PA2 & "' WHERE 日期 LIKE N'" & 日期 & "' AND 員工編號 = " & 員工編號 & "" CmdSet_For_dr() End Sub Friend Sub SQL_補打卡申請未准(員工編號 As String, 日期 As String, 審核人1 As String, 審核人2 As String) ConnOpen() SQL1 = "UPDATE 補打卡申請 SET 核准人1 = N'未准-" & 審核人1 & "', 核准人2 = N'未准-" & 審核人2 & "', 是否生效 = N'未核准', 核准日期1 = N'" & Format(Today(), "yyyy/MM/dd") & "', 核准日期2 = N'' WHERE 日期 LIKE N'" & 日期 & "' AND 員工編號 LIKE N'" & 員工編號 & "'" CmdSet_For_dr() End Sub Friend Sub SQL_人員薪資資料() ConnOpen() SQL1 = "SELECT ras_Users.DIN AS [No.], ras_Users.DIN AS 編號, ras_Users.UserName AS 姓名, 使用者權限管理表.CC18 AS 時薪人員, 使用者權限管理表.月薪, 使用者權限管理表.時薪, 使用者權限管理表.主管加級, 使用者權限管理表.職務加級, 使用者權限管理表.勞保費, 使用者權限管理表.健保費, 使用者權限管理表.到職日 FROM ras_Users INNER JOIN 使用者權限管理表 ON ras_Users.DIN = 使用者權限管理表.DIN WHERE IsLockedOut = 0 AND ras_Users.DIN NOT LIKE '18' AND ras_Users.DIN NOT LIKE '19' AND ras_Users.DIN NOT LIKE '21' AND ras_Users.DIN NOT LIKE '90' ORDER BY 編號" CmdSet_For_DGV() End Sub Friend Sub SQL_考勤明細表_人員() ConnOpen() SQL1 = "SELECT ras_Users.DIN AS [No.], ras_Users.DIN AS 編號, ras_Users.UserName AS 姓名, ras_Users.IsLockedOut AS 離職, 使用者權限管理表.月薪, 使用者權限管理表.時薪, 使用者權限管理表.主管加級, 使用者權限管理表.職務加級, 使用者權限管理表.勞保費, 使用者權限管理表.健保費, 使用者權限管理表.到職日, 使用者權限管理表.CC18 FROM ras_Users INNER JOIN 使用者權限管理表 ON ras_Users.DIN = 使用者權限管理表.DIN WHERE (ras_Users.IsLockedOut = 0) AND (ras_Users.DIN NOT LIKE '18') AND (ras_Users.DIN NOT LIKE '19') AND (ras_Users.DIN NOT LIKE '21') ORDER BY 編號" CmdSet_For_DGV() End Sub Friend Sub SQL_考勤明細表_月份考勤() '8、9、11、12、14、15 ConnOpen() SQL1 = "SELECT 萬年曆.日期, 萬年曆.星期, AA.請假類別 AS 休假類別, AA.事由 AS 假期內容, AA.是否生效, AA.核准人, AA.核准日期, 萬年曆.星期 AS 班別判斷, 萬年曆.星期 AS 一段上班, 萬年曆.星期 AS 一段下班, 萬年曆.星期 AS 休息1, 萬年曆.星期 AS 二段上班, 萬年曆.星期 AS 二段下班, 萬年曆.星期 AS 休息2, 萬年曆.星期 AS 加班上班, 萬年曆.星期 AS 加班下班, 萬年曆.星期 AS 一段工時, 萬年曆.星期 AS 二段工時, 萬年曆.星期 AS 加班工時, 萬年曆.星期 AS 一段加班, 萬年曆.星期 AS 二段加班, QQ.半天, QQ.班別, 萬年曆.下診 AS 最後下診, BB.申請狀態, BB.加班狀態, AA.申請時數 FROM 萬年曆 LEFT OUTER JOIN (SELECT 排班資料表.日期, 排班資料表.項次, 排班資料表.姓名, 排班資料表.班別, 排班資料表.上班時段, 排班資料表.時數, 排班資料表.半天, 排班資料表.休息, 排班資料表.一段, 排班資料表.二段, 排班資料表.排時, ras_Users.DIN FROM 排班資料表 INNER JOIN ras_Users ON 排班資料表.姓名 = ras_Users.UserName WHERE (排班資料表.日期 LIKE N'" & PA1 & "/" & PA2 & "%') AND (ras_Users.DIN = " & PA & ")) AS QQ ON 萬年曆.日期 = QQ.日期 LEFT OUTER JOIN (SELECT 員工編號, 日期, 請假類別, 事由, 是否生效, 核准人, 核准日期, 申請時數 FROM 人事請假單 WHERE (員工編號 LIKE N'" & PA & "') AND (日期 LIKE N'" & PA1 & "/" & PA2 & "%')) AS AA ON 萬年曆.日期 = AA.日期 LEFT OUTER JOIN (SELECT 員工編號, 日期, 加班狀態, 是否生效 AS 申請狀態 FROM 加班申請單 WHERE (員工編號 LIKE N'" & PA & "') AND (日期 LIKE N'" & PA1 & "/" & PA2 & "%')) AS BB ON 萬年曆.日期 = BB.日期 WHERE (萬年曆.日期 LIKE N'" & PA1 & "/" & PA2 & "%') ORDER BY 萬年曆.日期" CmdSet_For_DGV() End Sub Friend Sub SQL_考勤明細表_考勤流水() ConnOpen() SQL1 = "SELECT ID AS [No.], ID, CONVERT(varchar(100), Clock, 120) AS 打卡時間 FROM ras_AttRecord WHERE (DIN = " & PA & ") AND (MONTH(Clock) = N'" & PA2 & "') AND (YEAR(Clock) = N'" & PA1 & "') ORDER BY Clock" CmdSet_For_DGV() End Sub Friend Sub SQL_考勤明細表_班別() ConnOpen() SQL1 = "SELECT ID, 時段, 上午上班, 一段休息, 下午上班, 二段休息, 加班上班, 時段1, 時段2, 時段3, 時段4, 時段5, 時段6, 時段7, 時段8 FROM 時段設定 WHERE ID > 0 ORDER BY ID" CmdSet_For_DGV() End Sub Friend Sub SQL_考勤明細表_打卡讀取_上午上班() ConnOpen() SQL1 = "SELECT CONVERT(varchar(100), Clock, 24) AS 打卡時間, CASE WHEN DATEPART(HOUR, Clock) < 3 THEN CONVERT(varchar(10), DATEADD(DAY, -1, Clock), 111) ELSE CONVERT(varchar(10), Clock, 111) END AS 日期 FROM ras_AttRecord WHERE (DIN = " & PA & ") AND (MONTH(Clock) = N'" & PA2 & "') AND (YEAR(Clock) = N'" & PA1 & "') AND ( (CAST(Clock AS TIME) >= '05 : 00 : 00') OR (CAST(Clock AS TIME) < '03 : 00 : 00') ) ORDER BY Clock" CmdSet_For_DGV() End Sub Friend Sub SQL_考勤明細表_打卡讀取_中午下上班() ConnOpen() SQL1 = "SELECT CONVERT(varchar(100), Clock, 24) AS 打卡時間, CASE WHEN DATEPART(HOUR, Clock) < 3 THEN CONVERT(varchar(10), DATEADD(DAY, -1, Clock), 111) ELSE CONVERT(varchar(10), Clock, 111) END AS 日期 FROM ras_AttRecord WHERE (DIN = " & PA & ") AND (MONTH(Clock) = N'" & PA2 & "') AND (YEAR(Clock) = N'" & PA1 & "') AND (CAST(Clock AS TIME) <= '23 : 59 : 59') ORDER BY Clock" CmdSet_For_DGV() End Sub Friend Sub SQL_考勤明細表_打卡讀取_晚上下上班() ConnOpen() SQL1 = "SELECT CONVERT(varchar(100), Clock, 24) AS 打卡時間, CONVERT(varchar(10), Clock, 111) AS 日期 FROM ras_AttRecord WHERE (DIN = " & PA & ") AND (DAY(Clock) = N'" & PA3 & "') AND (MONTH(Clock) = N'" & PA2 & "') AND (YEAR(Clock) = N'" & PA1 & "') AND (Clock < N'" & PA1 & "/" & PA2 & "/" & PA3 & " " & DTPS(3) & "' AND Clock >= N'" & PA1 & "/" & PA2 & "/" & PA3 & " " & DTPS(2) & "') ORDER BY Clock" CmdSet_For_DGV() End Sub Friend Sub SQL_考勤明細表_打卡讀取_加班下班() ConnOpen() SQL1 = "SELECT CONVERT(varchar(100), Clock, 24) AS 打卡時間, CONVERT(varchar(10), Clock, 111) AS 日期 FROM ras_AttRecord WHERE (DIN = " & PA & ") AND (Clock < N'" & PA4 & " 05 : 00 : 00' AND Clock >= N'" & PA1 & "/" & PA2 & "/" & PA3 & " " & DTPS(4) & "') ORDER BY Clock" CmdSet_For_DGV() End Sub Friend Sub SQL_考勤明細表_年份_下拉() ConnOpen() : SQL1 = "SELECT 年份 FROM 年份清單 ORDER BY 年份 DESC" : CmdSet_For_dr() End Sub Friend Sub SQL_考勤明細表_讀取編號() ConnOpen() SQL1 = "SELECT DIN FROM ras_Users WHERE (UserName LIKE N'" & gUserName & "')" CmdSet_For_dr() End Sub Friend Sub SQL_讀取日期() ConnOpen() SQL1 = "SELECT 日期, 星期 FROM 萬年曆 WHERE 日期 LIKE N'" & PA1 & "/" & PA2 & "%' ORDER BY 日期" CmdSet_For_DGV() End Sub Friend Sub SQL_時間新增() ConnOpen() SQL1 = "INSERT INTO ras_AttRecord (DN, DIN, Clock, VerifyMode, Action, AttTypeId, CollectDate, JobCode, Antipassback, LastUpdatedUID, LastUpdatedDate, Remark) VALUES ('1', N'" & PA4 & "', N'" & PA3 & "', N'0', N'1', N'H01', N'" & Today() & "', 0, 0, 0, " & Today() & ", N'')" CmdSet_For_dr() End Sub Friend Sub SQL_時間修改() ConnOpen() SQL1 = "UPDATE ras_AttRecord SET Clock = N'" & PA3 & "' WHERE ID = " & PA4 & "" CmdSet_For_dr() End Sub Friend Sub SQL_時間刪除() ConnOpen() SQL1 = "DELETE ras_AttRecord WHERE ID = " & PA4 & "" CmdSet_For_dr() End Sub Friend Sub SQL_資料庫選擇() ConnOpen() : SQL1 = "SELECT TOP (1) 圖片資料庫 FROM 圖片資料庫管理 WHERE (是否可用 = 0) ORDER BY 圖片資料庫" : CmdSet_For_dr() End Sub Friend Sub SQL_考勤地點() ConnOpen() SQL1 = "SELECT 地點, 經度, 緯度, 容許誤差 FROM 考勤位置設定" CmdSet_For_DGV() End Sub Friend Sub SQL_考勤地點新增() ConnOpen() : SQL1 = "INSERT INTO 考勤位置設定 (地點, 經度, 緯度, 容許誤差) VALUES (N'" & PA1 & "', N'" & PA2 & "', N'" & PA3 & "', N'" & PA4 & "')" : CmdSet_For_dr() End Sub Friend Sub SQL_考勤地點修改() ConnOpen() : SQL1 = "UPDATE 考勤位置設定 SET 經度 = N'" & PA2 & "', 緯度 = N'" & PA3 & "', 容許誤差 = N'" & PA4 & "' WHERE 地點 LIKE N'" & PA1 & "'" : CmdSet_For_dr() End Sub Friend Sub SQL_考勤地點刪除() ConnOpen() : SQL1 = "DELETE 考勤位置設定 WHERE 地點 LIKE N'" & PA1 & "'" : CmdSet_For_dr() End Sub Friend Sub SQL_考勤位置異常清單() ConnOpen() SQL1 = "SELECT 手機打卡考勤表.主管機台 AS 設備認證, 手機打卡考勤表.打卡時間, ras_Users.UserName AS 打卡人員, 手機打卡考勤表.經度, 手機打卡考勤表.緯度, 手機打卡考勤表.狀態, 手機打卡考勤表.機碼, 手機打卡考勤表.狀態 AS [狀態.] FROM 手機打卡考勤表 INNER JOIN ras_Users ON 手機打卡考勤表.機碼 = ras_Users.DIN " & SQL2 & " ORDER BY 手機打卡考勤表.打卡時間, 打卡人員" CmdSet_For_DGV() End Sub Friend Sub SQL_考勤位置清單() ConnOpen() SQL1 = "SELECT 地點, 經度, 緯度, 容許誤差, 地點 AS 考勤距離, 地點 AS [判斷狀態] FROM 考勤位置設定" CmdSet_For_DGV() End Sub Friend Sub SQL_考勤地點異常修改() ConnOpen() : SQL1 = "UPDATE 手機打卡考勤表 SET 狀態 = N'" & PA3 & "' WHERE 機碼 LIKE N'" & PA1 & "' AND 打卡時間 = N'" & PA2 & "'" : CmdSet_For_dr() End Sub Friend Sub SQL_考勤系統手機綁定資料重複確認() ConnOpen() : SQL1 = "SELECT * FROM 手機打卡驗證管理 WHERE (帳號 LIKE N'" & PA1 & "')" : CmdSet_For_dr() End Sub Friend Sub SQL_考勤系統手機綁定資料新增() ConnOpen() : SQL1 = "INSERT INTO 手機打卡驗證管理 (帳號, 機碼, 獨立打卡, 不鎖定) VALUES (N'" & PA1 & "', N'" & PA2 & "', N'" & PA3 & "', N'" & PA4 & "')" : CmdSet_For_dr() End Sub Friend Sub SQL_考勤系統手機綁定資料修改() ConnOpen() : SQL1 = "UPDATE 手機打卡驗證管理 SET 帳號 = N'" & PA2 & "', 獨立打卡 = N'" & PA3 & "', 不鎖定 = N'" & PA4 & "' WHERE 機碼 LIKE N'" & PA1 & "'" : CmdSet_For_dr() End Sub Friend Sub SQL_考勤系統手機綁定資料刪除() ConnOpen() : SQL1 = "DELETE 手機打卡驗證管理 WHERE 帳號 LIKE N'" & PA1 & "'" : CmdSet_For_dr() End Sub Friend Sub SQL_考勤系統手機綁定清單() ConnOpen() SQL1 = "SELECT 使用者權限管理表.職位, ras_Users.UserName AS 姓名, ras_Users.DIN AS 系統編號, 手機打卡驗證管理.帳號, 手機打卡驗證管理.機碼, 手機打卡驗證管理.獨立打卡, 手機打卡驗證管理.不鎖定, ras_Users.IsLockedOut AS 離職 FROM 手機打卡驗證管理 INNER JOIN 使用者權限管理表 ON 手機打卡驗證管理.機碼 = 使用者權限管理表.DIN INNER JOIN ras_Users ON 手機打卡驗證管理.機碼 = ras_Users.DIN ORDER BY 系統編號" CmdSet_For_DGV() End Sub Friend Sub SQL_系統使用者管理_使用者清單() ConnOpen() SQL1 = "SELECT ras_Users.UserName AS 姓名, 使用者權限管理表.DIN AS 系統編號 , 使用者權限管理表.職位 AS 職稱, ras_Users.UserName AS 帳號 FROM 使用者權限管理表 INNER JOIN ras_Users ON 使用者權限管理表.DIN = ras_Users.DIN" & SQL2 CmdSet_For_DGV() End Sub Friend Sub SQL_排程日報資料讀取() ConnOpen() SQL1 = "SELECT 日期, CASE WHEN 醫師 LIKE '%治療' THEN LEFT(醫師, LEN(醫師) - 2) WHEN 醫師 LIKE '%回診' THEN LEFT(醫師, LEN(醫師) - 2) ELSE 醫師 END AS [醫師.], REPLACE(患者, '諮詢報到', '') AS 患者, 治療 AS 執行, 開始時間, 結束時間, 患者 AS [10: 00], 患者 AS [10: 05], 患者 AS [10: 10], 患者 AS [10: 15], 患者 AS [10: 20], 患者 AS [10: 25], 患者 AS [10: 30], 患者 AS [10: 35], 患者 AS [10: 40], 患者 AS [10: 45], 患者 AS [10: 50], 患者 AS [10: 55], 患者 AS [11: 00], 患者 AS [11: 05], 患者 AS [11: 10], 患者 AS [11: 15], 患者 AS [11: 20], 患者 AS [11: 25], 患者 AS [11: 30], 患者 AS [11: 35], 患者 AS [11: 40], 患者 AS [11: 45], 患者 AS [11: 50], 患者 AS [11: 55], 患者 AS [12: 00], 患者 AS [12: 05], 患者 AS [12: 10], 患者 AS [12: 15], 患者 AS [12: 20], 患者 AS [12: 25], 患者 AS [12: 30], 患者 AS [12: 35], 患者 AS [12: 40], 患者 AS [12: 45], 患者 AS [12: 50], 患者 AS [12: 55], 患者 AS [13: 00], 患者 AS [13: 05], 患者 AS [13: 10], 患者 AS [13: 15], 患者 AS [13: 20], 患者 AS [13: 25], 患者 AS [13: 30], 患者 AS [13: 35], 患者 AS [13: 40], 患者 AS [13: 45], 患者 AS [13: 50], 患者 AS [13: 55], 患者 AS [14: 00], 患者 AS [14: 05], 患者 AS [14: 10], 患者 AS [14: 15], 患者 AS [14: 20], 患者 AS [14: 25], 患者 AS [14: 30], 患者 AS [14: 35], 患者 AS [14: 40], 患者 AS [14: 45], 患者 AS [14: 50], 患者 AS [14: 55], 患者 AS [15: 00], 患者 AS [15: 05], 患者 AS [15: 10], 患者 AS [15: 15], 患者 AS [15: 20], 患者 AS [15: 25], 患者 AS [15: 30], 患者 AS [15: 35], 患者 AS [15: 40], 患者 AS [15: 45], 患者 AS [15: 50], 患者 AS [15: 55], 患者 AS [16: 00], 患者 AS [16: 05], 患者 AS [16: 10], 患者 AS [16: 15], 患者 AS [16: 20], 患者 AS [16: 25], 患者 AS [16: 30], 患者 AS [16: 35], 患者 AS [16: 40], 患者 AS [16: 45], 患者 AS [16: 50], 患者 AS [16: 55], 患者 AS [17: 00], 患者 AS [17: 05], 患者 AS [17: 10], 患者 AS [17: 15], 患者 AS [17: 20], 患者 AS [17: 25], 患者 AS [17: 30], 患者 AS [17: 35], 患者 AS [17: 40], 患者 AS [17: 45], 患者 AS [17: 50], 患者 AS [17: 55], 患者 AS [18: 00], 患者 AS [18: 05], 患者 AS [18: 10], 患者 AS [18: 15], 患者 AS [18: 20], 患者 AS [18: 25], 患者 AS [18: 30], 患者 AS [18: 35], 患者 AS [18: 40], 患者 AS [18: 45], 患者 AS [18: 50], 患者 AS [18: 55], 患者 AS [19: 00], 患者 AS [19: 05], 患者 AS [19: 10], 患者 AS [19: 15], 患者 AS [19: 20], 患者 AS [19: 25], 患者 AS [19: 30], 患者 AS [19: 35], 患者 AS [19: 40], 患者 AS [19: 45], 患者 AS [19: 50], 患者 AS [19: 55], 患者 AS [20: 00], 患者 AS [20: 05], 患者 AS [20: 10], 患者 AS [20: 15], 患者 AS [20: 20], 患者 AS [20: 25], 患者 AS [20: 30], 患者 AS [20: 35], 患者 AS [20: 40], 患者 AS [20: 45], 患者 AS [20: 50], 患者 AS [20: 55], 患者 AS [21: 00], 患者 AS [21: 05], 患者 AS [21: 10], 患者 AS [21: 15], 患者 AS [21: 20], 患者 AS [21: 25], 患者 AS [21: 30], 患者 AS [21: 35], 患者 AS [21: 40], 患者 AS [21: 45], 患者 AS [21: 50], 患者 AS [21: 55], 患者 AS [22: 00], 內容 FROM 掛號日曆表 ORDER BY 日期 DESC, [醫師.], 開始時間" CmdSet_For_DGV() ' WHERE (日期 LIKE N'2025/03/25') End Sub End Module