Module SQL_休假與加班
    Friend Sub SQL_國定假日設定_月份考勤()
        ConnOpen()
        SQL1 = "SELECT      萬年曆.日期, 萬年曆.星期, AA.請假類別, AA.事由, AA.是否生效, AA.核准人, AA.核准日期, AA.圖片資料庫, AA.圖片編號, AA.申請時數, AA.申請時間
                FROM             萬年曆 LEFT OUTER JOIN
                                (SELECT           員工編號, 日期, 請假類別, 事由, 是否生效, 核准人, 核准日期, 圖片資料庫, 圖片編號, 申請時數, 申請時間
                                 FROM             人事請假單
                                 WHERE           (員工編號 LIKE N'" & PA & "') AND (日期 LIKE N'" & PA1 & "/" & PA2 & "%')) AS AA ON 萬年曆.日期 = AA.日期
                WHERE          (萬年曆.日期 LIKE N'" & PA1 & "/" & PA2 & "%')
                ORDER BY   萬年曆.日期"
        CmdSet_For_DGV()
    End Sub
    Friend Sub SQL_休假申請()
        ConnOpen()
        SQL1 = "SELECT ras_Users.UserName AS 姓名, 人事請假單.員工編號 AS 編號, 人事請假單.日期, 萬年曆.星期, 人事請假單.請假類別, 
                       人事請假單.事由, 人事請假單.是否生效, 人事請假單.核准人, 人事請假單.核准日期, 圖片資料庫, 圖片編號, 人事請假單.申請時數, 人事請假單.申請時間
                FROM   人事請假單 INNER JOIN
                       萬年曆 ON 人事請假單.日期 = 萬年曆.日期 INNER JOIN
                       ras_Users ON 人事請假單.員工編號 = ras_Users.DIN
                WHERE (人事請假單.是否生效 NOT LIKE N'已核准')
                ORDER BY ras_Users.UserName, 人事請假單.日期"
        CmdSet_For_DGV()
    End Sub
    Friend Sub SQL_休假統計()
        ConnOpen()
        SQL1 = "SELECT          CASE WHEN 請假類別 = '特休' THEN '特休' WHEN 請假類別 = '事假' THEN '事假' WHEN 請假類別 = '病假' THEN '病假'
                                     WHEN 請假類別 = '婚假' THEN '婚假' WHEN 請假類別 = '喪假' THEN '喪假' ELSE '其他' END AS 假別, COUNT(*) AS 天數, 
                                          SUM(CAST(申請時數 AS DECIMAL(10, 1))) AS 總時數
                FROM       人事請假單
                WHERE     (請假類別 NOT LIKE '國定假日') AND (請假類別 NOT LIKE '未到') AND (請假類別 NOT LIKE '離職') AND 
                          (是否生效 LIKE '已核准') AND (員工編號 LIKE '" & PA & "') AND (日期 LIKE '" & Strings.Left(PA1, 4) & "%')
                GROUP BY   CASE WHEN 請假類別 = '特休' THEN '特休' WHEN 請假類別 = '事假' THEN '事假' WHEN 請假類別 = '病假' THEN '病假'
                                WHEN 請假類別 = '婚假' THEN '婚假' WHEN 請假類別 = '喪假' THEN '喪假' ELSE '其他' END"
        CmdSet_For_DGV()
    End Sub
    Friend Sub SQL_休假統計1()
        ConnOpen()
        SQL1 = "SELECT          CASE WHEN 請假類別 = '特休' THEN '特休' WHEN 請假類別 = '事假' THEN '事假' WHEN 請假類別 = '病假' THEN '病假'
                                     WHEN 請假類別 = '婚假' THEN '婚假' WHEN 請假類別 = '喪假' THEN '喪假' WHEN 請假類別 = '未到' THEN '未到'
                                     WHEN 請假類別 = '離職' THEN '離職' ELSE '其他' END AS 假別, COUNT(*) AS 天數, 
                                          SUM(CAST(申請時數 AS DECIMAL(10, 1))) AS 總時數
                FROM       人事請假單
                WHERE     (請假類別 NOT LIKE '國定假日') AND (員工編號 LIKE '" & PA & "') AND (日期 LIKE '" & Strings.Left(PA1, 7) & "%')
                GROUP BY   CASE WHEN 請假類別 = '特休' THEN '特休' WHEN 請假類別 = '事假' THEN '事假' WHEN 請假類別 = '病假' THEN '病假'
                                WHEN 請假類別 = '婚假' THEN '婚假' WHEN 請假類別 = '喪假' THEN '喪假' WHEN 請假類別 = '未到' THEN '未到' 
                                WHEN 請假類別 = '離職' THEN '離職' ELSE '其他' END"
        CmdSet_For_DGV()
    End Sub
    Friend Sub SQL_休假清單()
        ConnOpen()
        SQL1 = "SELECT ras_Users.UserName AS 姓名, 人事請假單.員工編號 AS 編號, 人事請假單.日期, 萬年曆.星期, 人事請假單.請假類別, 
                       人事請假單.事由, 人事請假單.是否生效, 人事請假單.核准人, 人事請假單.核准日期, 人事請假單.圖片資料庫, 
                       人事請假單.圖片編號, 人事請假單.申請時數
                FROM   人事請假單 INNER JOIN
                       萬年曆 ON 人事請假單.日期 = 萬年曆.日期 INNER JOIN
                       ras_Users ON 人事請假單.員工編號 = ras_Users.DIN
                WHERE (人事請假單.請假類別 NOT LIKE N'國定假日') AND (人事請假單.請假類別 NOT LIKE N'未到') AND 
                      (人事請假單.請假類別 NOT LIKE N'離職')  AND (人事請假單.員工編號 LIKE N'" & PA & "')
                ORDER BY ras_Users.UserName, 人事請假單.日期 DESC"
        CmdSet_For_DGV()
    End Sub
    Friend Sub SQL_國定假日設定_人員()
        ConnOpen()
        SQL1 = "SELECT     ras_Users.DIN AS [No.], ras_Users.DIN AS 編號, ras_Users.UserName AS 姓名
                FROM       ras_Users INNER JOIN
                           ras_AttRecord ON ras_Users.DIN = ras_AttRecord.DIN
                WHERE          (ras_Users.IsLockedOut = 0)
                GROUP BY   ras_Users.DIN, ras_Users.UserName
                ORDER BY   編號 DESC"
        CmdSet_For_DGV()
    End Sub
    Friend Sub SQL_國定假日設定_查詢()
        ConnOpen()
        SQL1 = "SELECT 員工編號 FROM 人事請假單 WHERE (員工編號 LIKE N'" & PA & "') AND (日期 LIKE N'" & PA1 & "')"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_國定假日設定_新增()
        ConnOpen()
        SQL1 = "SELECT  年份 FROM 年份清單 ORDER BY 年份 DESC"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_國定假日設定_核准()
        ConnOpen()
        SQL1 = "SELECT  年份 FROM 年份清單 ORDER BY 年份 DESC"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_國定假日申請()
        ConnOpen()
        SQL1 = "INSERT INTO 人事請假單 (員工編號, 日期, 請假類別, 事由, 是否生效) 
                SELECT N'" & PA & "',N'" & 國定假日設定.請假日期_tb.Text & "',N'" & 國定假日設定.請假類別_cb.Text &
                     "','" & 國定假日設定.TextBox5.Text & "','申請中'"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_國定假日核准()
        ConnOpen()
        SQL1 = "UPDATE 人事請假單 SET 核准人 = N'系統設定', 核准日期 = N'" & DTP & "', 是否生效 = N'已核准' 
                WHERE (員工編號 LIKE N'" & PA & "') AND (日期 LIKE N'" & 國定假日設定.請假日期_tb.Text & "%')"
        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 = "UPDATE 萬年曆 SET 下診 = N'" & PA1 & "' WHERE (日期 LIKE N'" & PA & "')"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_下診時間設刪除()
        ConnOpen()
        SQL1 = "UPDATE 萬年曆 SET 下診 = N'' WHERE (日期 LIKE N'" & PA & "')"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_加班申請()
        ConnOpen()
        SQL1 = "SELECT      萬年曆.日期, 萬年曆.星期, AA.加班狀態, AA.事由紀錄, AA.是否生效, AA.核准人1, AA.核准日期1, AA.核准人2, AA.核准日期2, AA.圖片資料庫,  AA.圖片編號
                FROM             萬年曆 LEFT OUTER JOIN
                                (SELECT           員工編號, 日期, 加班狀態, 事由紀錄, 是否生效, 核准人1, 核准日期1, 核准人2, 核准日期2, 圖片資料庫, 圖片編號
                                 FROM             加班申請單
                                 WHERE           (員工編號 LIKE N'" & PA & "') AND (日期 LIKE N'" & PA1 & "/" & PA2 & "%')) AS AA ON 萬年曆.日期 = AA.日期
                WHERE          (萬年曆.日期 LIKE N'" & PA1 & "/" & PA2 & "%')
                ORDER BY   萬年曆.日期"
        CmdSet_For_DGV()
    End Sub
    Friend Sub SQL_加班申請刪除()
        ConnOpen()
        SQL1 = "DELETE FROM  加班申請單  WHERE 日期 LIKE N'" & 加班申請.特假日期_tb.Text & "' AND 員工編號 = " & 加班申請.員工編號_tb.Text & ""
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_加班申請新增()
        ConnOpen()
        SQL1 = "INSERT INTO 加班申請單  (員工編號, 日期, 加班狀態, 事由紀錄, 是否生效, 核准人1, 核准人2, 圖片資料庫, 圖片編號)
                VALUES (N'" & 加班申請.員工編號_tb.Text & "',N'" & 加班申請.特假日期_tb.Text & "',
                        N'" & 加班申請.請假類別_cb.Text & "' , N'" & 加班申請.事由_tb.Text & "','申請中', N'', N'', N'" & 加班申請.資料指定圖庫_tb.Text & "', 
                        N'" & 加班申請.圖片流水號_tb.Text & "')"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_加班申請修改()
        ConnOpen()
        SQL1 = "UPDATE 加班申請單 SET 加班狀態 = N'" & 加班申請.請假類別_cb.Text & "', 事由紀錄 = N'" & 加班申請.事由_tb.Text & "', 圖片資料庫 = N'" & 加班申請.資料指定圖庫_tb.Text & "', 
                                      圖片編號 = N'" & 加班申請.圖片流水號_tb.Text & "'
                WHERE  日期 LIKE N'" & 加班申請.特假日期_tb.Text & "' AND 員工編號 = " & 加班申請.員工編號_tb.Text & ""
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_加班申請查詢()
        ConnOpen()
        SQL1 = "SELECT  員工編號, 日期  FROM  加班申請單
                WHERE  (員工編號 LIKE N'" & 加班申請.員工編號_tb.Text & "' AND 日期 LIKE N'" & 加班申請.特假日期_tb.Text & "')"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_加班申請明細()
        ConnOpen()
        SQL1 = "SELECT      ras_Users.UserName AS 姓名, 加班申請單.員工編號, 加班申請單.日期, 萬年曆.星期, 萬年曆.下診, 加班申請單.加班狀態, 
                            加班申請單.事由紀錄, 加班申請單.核准人1, 加班申請單.核准日期1, 加班申請單.核准人2, 加班申請單.核准日期2, 
                            加班申請單.是否生效, 加班申請單.圖片資料庫, 加班申請單.圖片編號
                FROM        加班申請單 INNER JOIN
                            萬年曆 ON 加班申請單.日期 = 萬年曆.日期 LEFT OUTER JOIN
                            ras_Users ON 加班申請單.員工編號 = ras_Users.DIN
                WHERE       (加班申請單.核准人1 NOT LIKE N'" & gUserName & "') AND (加班申請單.是否生效 LIKE N'申請中') AND
                            ((加班申請單.核准人1 NOT LIKE N'未准%') OR
                            (加班申請單.核准人2 NOT LIKE N'未准%'))
                ORDER BY 加班申請單.日期, 加班申請單.員工編號"
        CmdSet_For_DGV()
    End Sub
    Friend Sub SQL_加班申請清單()
        ConnOpen()
        SQL1 = "SELECT      ras_Users.UserName AS 姓名, 加班申請單.員工編號, 加班申請單.日期, 萬年曆.星期, 萬年曆.下診, 加班申請單.加班狀態, 
                            加班申請單.事由紀錄, 加班申請單.核准人1, 加班申請單.核准日期1, 加班申請單.核准人2, 加班申請單.核准日期2, 
                            加班申請單.是否生效, 加班申請單.圖片資料庫, 加班申請單.圖片編號
                FROM        加班申請單 INNER JOIN
                            萬年曆 ON 加班申請單.日期 = 萬年曆.日期 LEFT OUTER JOIN
                            ras_Users ON 加班申請單.員工編號 = ras_Users.DIN
                WHERE      (加班申請單.是否生效 LIKE N'%核准') AND 加班申請單.日期 LIKE N'" & PA & "%'
                ORDER BY    加班申請單.員工編號, 加班申請單.日期"
        CmdSet_For_DGV()
    End Sub
    Friend Sub SQL_加班審核核准()
        ConnOpen()
        SQL1 = "UPDATE  加班申請單 SET  核准人1 = N'" & 加班審核.審核人1_tb.Text & "',  核准人2 = N'" & 加班審核.審核人2_tb.Text & "', 是否生效 = N'" & PA & "', 
                                        核准日期1 = N'" & PA1 & "', 核准日期2 = N'" & PA2 & "'
                WHERE 日期 LIKE N'" & 加班審核.特假日期_tb.Text & "' AND 員工編號 = " & 加班審核.員工編號_tb.Text & ""
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_加班審核未准()
        ConnOpen()
        SQL1 = "UPDATE  加班申請單 SET  核准人1 = N'未准-" & 加班審核.審核人1_tb.Text & "',  核准人2 = N'未准-" & 加班審核.審核人2_tb.Text & "', 是否生效 = N'未核准', 
                                        核准日期1 = N'" & Format(Today(), "yyyy/MM/dd") & "', 核准日期2 = N''
                WHERE 日期 LIKE N'" & 加班審核.特假日期_tb.Text & "' AND 員工編號 = " & 加班審核.員工編號_tb.Text & ""
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_休假申請明細()
        ConnOpen() : SQL1 = "SELECT 員工編號, 日期, 請假類別, 核准人, 核准日期, 是否生效, 事由  FROM   人事請假單  WHERE (是否生效 NOT LIKE N'已核准')" : CmdSet_For_DGV()
    End Sub
    Friend Sub SQL_休假申請明細_刪除()
        ConnOpen()
        SQL1 = "DELETE 人事請假單 
                WHERE (員工編號 LIKE N'" & 休假歷史紀錄.員工編號_tb.Text & "' AND 
                       日期 LIKE N'" & 休假歷史紀錄.請假日期_tb.Text & "' AND 請假類別 LIKE N'" & 休假歷史紀錄.請假類別_cb.Text & "')"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_查詢最後一筆圖片編號()
        ConnOpen_圖庫SQL() : SQL1 = "SELECT TOP(1) 流水號 FROM 加班圖片庫 ORDER BY 流水號 DESC" : CmdSet_For_dr()
    End Sub
    Friend Sub SQL_查詢最後一筆圖片編號1()
        ConnOpen_圖庫SQL() : SQL1 = "SELECT TOP(1) 流水號 FROM 請假圖片庫 ORDER BY 流水號 DESC" : CmdSet_For_dr()
    End Sub
    Friend Sub SQL_修改加班圖()
        ConnOpen_圖庫SQL()
        SQL1 = "UPDATE 加班圖片庫 SET 圖片 = @binary_file WHERE 流水號 LIKE N'" & 加班申請.圖片流水號_tb.Text & "'"
        CmdSet_For_dr_pic()
    End Sub
    Friend Sub SQL_新增加班圖()
        ConnOpen_圖庫SQL()
        SQL1 = "INSERT INTO 加班圖片庫 (流水號, 圖片) SELECT N'" & 加班申請.圖片流水號_tb.Text & "', @binary_file"
        CmdSet_For_dr_pic()
    End Sub
    Friend Sub SQL_加班圖()
        ConnOpen_圖庫SQL() : SQL1 = "SELECT 圖片 FROM 加班圖片庫 WHERE 流水號 LIKE '" & PA2 & "'" : CmdSet_For_dr()
    End Sub
    Friend Sub SQL_請假圖()
        ConnOpen_圖庫SQL() : SQL1 = "SELECT 圖片 FROM 請假圖片庫 WHERE 流水號 LIKE '" & PA2 & "'" : CmdSet_For_dr()
    End Sub
    Friend Sub SQL_修改請假圖()
        ConnOpen_圖庫SQL()
        SQL1 = "UPDATE 請假圖片庫 SET 圖片 = @binary_file WHERE 流水號 LIKE N'" & 休假申請.圖片流水號_tb.Text & "'"
        CmdSet_For_dr_pic()
    End Sub
    Friend Sub SQL_新增請假圖()
        ConnOpen_圖庫SQL()
        SQL1 = "INSERT INTO 請假圖片庫 (流水號, 圖片) SELECT N'" & 休假申請.圖片流水號_tb.Text & "', @binary_file"
        CmdSet_For_dr_pic()
    End Sub
End Module
