Module SQL_排班系統 Friend Sub SQL_排班系統_月份() ConnOpen() SQL1 = "SELECT 萬年曆.日期, 萬年曆.星期, AQAQ.請假類別 AS 休假 FROM 萬年曆 LEFT OUTER JOIN (SELECT 日期 AS 日, 請假類別 FROM 人事請假單 WHERE (請假類別 NOT LIKE N'特休') AND (請假類別 NOT LIKE N'%假') AND (請假類別 NOT LIKE N'未到') AND (請假類別 NOT LIKE N'離職') GROUP BY 日期, 請假類別) AS AQAQ ON 萬年曆.日期 = AQAQ.日 WHERE (萬年曆.日期 LIKE N'" & PA1 & "/" & PA2 & "%')" CmdSet_For_DGV() End Sub Friend Sub SQL_排班系統_人員排班() ConnOpen() SQL1 = "SELECT 排班資料表.姓名, COUNT(排班資料表.姓名) AS 天數, SUM(排班資料表.排時) AS 本月應上時數, SUM(CASE WHEN AA.請假類別 IS NULL THEN 排班資料表.排時 ELSE 0 END) AS 已排班時數, SUM(CASE WHEN AA.請假類別 IS NULL THEN 0 ELSE 排班資料表.排時 END) AS 未排班時數, SUM(CASE WHEN AA.請假類別 = '國定假日' OR 萬年曆.星期 = '星期六' THEN 1 ELSE 0 END) AS 假日出勤 FROM 排班資料表 LEFT OUTER JOIN 萬年曆 ON 排班資料表.日期 = 萬年曆.日期 LEFT OUTER JOIN (SELECT 日期, 請假類別 FROM 人事請假單 WHERE (請假類別 LIKE '國定假日') AND (日期 LIKE N'" & PA & "%') GROUP BY 日期, 請假類別) AS AA ON 排班資料表.日期 = AA.日期 WHERE (排班資料表.日期 LIKE N'" & PA & "%') AND (排班資料表.姓名 NOT LIKE '') AND (排班資料表.班別 NOT LIKE N'休%') GROUP BY 排班資料表.姓名 ORDER BY 排班資料表.姓名" CmdSet_For_DGV() End Sub Friend Sub SQL_排班系統_當天排班() ConnOpen() If 排班資料.職員_ch.Checked = True Then SQL1 = "SELECT 班別, STRING_AGG(姓名, N'、') AS 人員 FROM 排班資料表 WHERE (日期 LIKE N'" & PA & "') AND (姓名 NOT LIKE N'') AND (排班資料表.班別 NOT LIKE N'休%') GROUP BY 班別 ORDER BY 班別" Else SQL1 = "SELECT 班別, 人員 FROM (SELECT 診別 + '-' + '早' AS 班別, 早 AS 人員 FROM 門診資料 WHERE (日期 LIKE N'" & PA & "') UNION SELECT 診別 + '-' + '中' AS 班別, 中 AS 人員 FROM 門診資料 AS 門診資料_2 WHERE (日期 LIKE N'" & PA & "') UNION SELECT 診別 + '-' + '晚' AS 班別, 晚 AS 人員 FROM 門診資料 AS 門診資料_1 WHERE (日期 LIKE N'" & PA & "')) AS SubQuery ORDER BY CASE WHEN 班別 LIKE '%早' THEN 1 WHEN 班別 LIKE '%中' THEN 2 WHEN 班別 LIKE '%晚' THEN 3 END" End If CmdSet_For_DGV() End Sub Friend Sub SQL_排班系統_班別_下拉() ConnOpen() : SQL1 = "SELECT 時段 FROM 時段設定 ORDER BY ID" : CmdSet_For_dr() End Sub Friend Sub SQL_排班系統_職務_下拉() ConnOpen() : SQL1 = "SELECT 職務 FROM 工作職務 ORDER BY 職務" : CmdSet_For_dr() End Sub Friend Sub SQL_排班系統_班別_人員() ConnOpen() SQL1 = "SELECT DIN AS [No.], DIN AS 編號, UserName AS 姓名 FROM ras_Users WHERE (IsLockedOut = 0) AND (DIN <> 18) AND (DIN <> 19) AND (DIN <> 21) ORDER BY CAST(Password AS int)" CmdSet_For_DGV() End Sub Friend Sub SQL_排班系統_班別_人員_全() ConnOpen() SQL1 = "SELECT DIN AS [No.], DIN AS 編號, UserName AS 姓名 FROM ras_Users WHERE (DIN <> 18) AND (DIN <> 19) AND (DIN <> 21) ORDER BY CAST(Password AS int)" CmdSet_For_DGV() End Sub Friend Sub SQL_排班系統_班別_排班() ConnOpen() SQL1 = "SELECT 姓名, 班別, 上班時段, 時數, 半天, 休息, 一段, 二段, 顏色1, 顏色2, 項次, CAST(項次 AS INT) AS 項 FROM 排班資料表 WHERE (日期 LIKE N'" & PA & "') ORDER BY CAST(項次 AS INT)" CmdSet_For_DGV() End Sub Friend Sub SQL_排班系統_個人整月排班() ConnOpen() SQL1 = "SELECT RIGHT(日期, 2) AS 項次, 姓名, 班別, 上班時段, 時數, 半天, 休息, 一段, 二段, 顏色1, 顏色2 FROM 排班資料表 WHERE (日期 LIKE N'" & PA & "%') AND (姓名 LIKE N'" & PA2 & "') ORDER BY 日期" CmdSet_For_DGV() End Sub Friend Sub SQL_排班系統_個人整月星期() ConnOpen() SQL1 = "SELECT 星期, 班表簽認 FROM 萬年曆 WHERE (日期 LIKE N'" & PA & "%') ORDER BY 日期" CmdSet_For_DGV() End Sub Friend Sub SQL_排班明細_判斷是否有資料() ConnOpen() : SQL1 = "SELECT 日期 FROM 排班資料表 WHERE 日期 LIKE N'" & PA & "'" : CmdSet_For_dr() End Sub Friend Sub SQL_排班明細_刪除當天() ConnOpen() : SQL1 = "DELETE 排班資料表 WHERE 日期 LIKE N'" & PA & "'" : CmdSet_For_dr() End Sub Friend Sub SQL_排班明細_新增當天() ConnOpen() SQL1 = "INSERT INTO 排班資料表 (日期, 項次, 姓名, 班別, 上班時段, 時數, 半天, 休息, 一段, 二段, 排時, 顏色1, 顏色2) VALUES (N'" & PA & "', N'" & PA1 & "', N'" & PA2 & "', N'" & PA3 & "', N'" & PA4 & "', N'" & Do2 & "', N'" & BL1 & "', " & Do1 & ", N'" & PA5 & "', N'" & PA6 & "', N'" & Do3 & "', N'" & PA7 & "', N'" & PA8 & "')" CmdSet_For_dr() End Sub Friend Sub SQL_排班簽核讀取() ConnOpen() : SQL1 = "SELECT 班表簽認, 值日生1, 值日生2 FROM 萬年曆 WHERE 日期 LIKE N'" & PA & "'" : CmdSet_For_dr() End Sub Friend Sub SQL_排班簽核() ConnOpen() : SQL1 = "UPDATE 萬年曆 SET 班表簽認 = N'Y' WHERE 日期 LIKE N'" & PA & "'" : CmdSet_For_dr() End Sub Friend Sub SQL_值日生存檔() ConnOpen() : SQL1 = "UPDATE 萬年曆 SET 值日生1 = N'" & PA13 & "', 值日生2 = N'" & PA14 & "' WHERE 日期 LIKE N'" & PA & "'" : CmdSet_For_dr() End Sub Friend Sub SQL_排班明細_上午上班() ConnOpen() : SQL1 = "SELECT 上午上班 FROM 時段設定 WHERE 時段 like N'" & PA3 & "'" : CmdSet_For_dr() End Sub Friend Sub SQL_排班系統_星期() ConnOpen() SQL1 = "SELECT 星期 FROM 萬年曆 WHERE (萬年曆.日期 LIKE N'" & PA & "%')" CmdSet_For_dr() End Sub Friend Sub SQL_門診_健保() ConnOpen() SQL1 = "SELECT 星期, 診別, 早, 中, 晚 FROM 門診資料 WHERE 日期 LIKE N'" & PA & "' AND 診別 LIKE N'健保'" CmdSet_For_dr() End Sub Friend Sub SQL_門診_美容() ConnOpen() SQL1 = "SELECT 星期, 診別, 早, 中, 晚 FROM 門診資料 WHERE 日期 LIKE N'" & PA & "' AND 診別 LIKE N'醫美'" CmdSet_For_dr() End Sub Friend Sub SQL_人員備註() ConnOpen() SQL1 = "SELECT 人員備註, 職位, 性質, 早班, 晚班, 崗位01, 崗位02, 崗位03, 崗位04, 崗位05, 崗位06, 崗位07, 崗位08, 穩定 FROM 使用者權限管理表 WHERE (DIN LIKE N'" & PA & "')" CmdSet_For_dr() End Sub Friend Sub SQL_人員備註修改() ConnOpen() SQL1 = "UPDATE 使用者權限管理表 SET 人員備註 = N'" & PA10 & "', 職位 = N'" & PA11 & "', 性質 = N'" & PA12 & "', 早班 = N'" & PA13 & "', 晚班 = N'" & PA14 & "', 崗位01 = N'" & PA9 & "', 崗位02 = N'" & PA8 & "', 崗位03 = N'" & PA7 & "', 崗位04 = N'" & PA6 & "', 崗位05 = N'" & PA5 & "', 崗位06 = N'" & PA4 & "', 崗位07 = N'" & PA3 & "', 崗位08 = N'" & PA2 & "', 穩定 = N'" & PA1 & "' WHERE (DIN LIKE N'" & PA & "')" CmdSet_For_dr() End Sub Friend Sub SQL_人員備註清單() ConnOpen() SQL1 = "SELECT ras_Users.DIN AS [No.], ras_Users.DIN AS 編號, ras_Users.UserName AS 姓名, 使用者權限管理表.職位, 使用者權限管理表.性質, 使用者權限管理表.早班, 使用者權限管理表.晚班, 使用者權限管理表.崗位01 AS [1F掛號], 使用者權限管理表.崗位02 AS [1F掛號(實)], 使用者權限管理表.崗位03 AS [1F跟診], 使用者權限管理表.崗位04 AS [1F治療], 使用者權限管理表.崗位05 AS [1F治療(實)], 使用者權限管理表.崗位06 AS [2F櫃台], 使用者權限管理表.崗位07 AS [2F醫美], 使用者權限管理表.崗位08 AS [行政], 使用者權限管理表.穩定, 使用者權限管理表.人員備註 FROM ras_Users INNER JOIN 使用者權限管理表 ON ras_Users.DIN = 使用者權限管理表.DIN WHERE (ras_Users.IsLockedOut = 0) AND (ras_Users.DIN <> 18) AND (ras_Users.DIN <> 19) AND (ras_Users.DIN <> 21) ORDER BY CAST(ras_Users.Password AS int)" CmdSet_For_DGV() End Sub End Module