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 假日出勤, SUM(排班資料表.後段) 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 班別"
        ElseIf 排班資料.請休假_ch.Checked = True Then
            SQL1 = "SELECT 人事請假單.請假類別 AS 班別, STRING_AGG(ras_Users.UserName, N'、') AS 人員
                    FROM   人事請假單 INNER JOIN ras_Users ON 人事請假單.員工編號 = ras_Users.DIN
                    WHERE          (人事請假單.請假類別 NOT LIKE '未到') AND (人事請假單.請假類別 NOT LIKE '國定假日') AND 
                            (人事請假單.請假類別 NOT LIKE '離職') AND (人事請假單.日期 LIKE N'" & PA & "')
                    GROUP BY  人事請假單.請假類別 ORDER BY 人事請假單.請假類別"
        ElseIf 排班資料.醫生_ch.Checked = True Then
            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 項, AA.請假類別, 排班資料表.後段
                FROM       (SELECT   人事請假單.請假類別, ras_Users.UserName, 人事請假單.是否生效
                            FROM     人事請假單 INNER JOIN ras_Users ON 人事請假單.員工編號 = ras_Users.DIN
                            WHERE   (人事請假單.請假類別 NOT LIKE '未到') AND (人事請假單.請假類別 NOT LIKE '國定假日') AND 
                                    (人事請假單.請假類別 NOT LIKE '離職') AND (人事請假單.是否生效 NOT LIKE N'未核准') AND (人事請假單.日期 LIKE N'" & PA & "')) 
                            AS AA RIGHT OUTER JOIN 排班資料表 ON AA.UserName = 排班資料表.姓名
                WHERE     (排班資料表.日期 LIKE N'" & PA & "')
                ORDER BY   項"
        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 & "', N'" & PA9 & "')"
        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
