Module SQL_人事系統管理
    Friend Sub SQL_系統組織結_級別讀取()
        ConnOpen() : SQL1 = "SELECT 級別 FROM 使用者權限管理表 WHERE (姓名 LIKE N'" & PA47 & "')" : CmdSet_For_dr()
    End Sub
    Friend Sub SQL_系統組織結構圖_單位主管1()
        SQL_系統組織結_級別讀取()
        If dr.Read Then : PA46 = dr("級別") : End If
        ConnOpen()
        SQL1 = "SELECT  QQ.姓名 AS 主管, QQ.級別, QQ.職稱
                FROM    使用者權限管理表 INNER JOIN  系統跨部門權限表 ON 使用者權限管理表.職稱 = 系統跨部門權限表.職稱 INNER JOIN
                       (SELECT  姓名, 級別, 職稱  FROM  使用者權限管理表 AS 使用者權限管理表_1  WHERE  (CAST(級別 AS int) < " & PA46 & ") AND (級別 NOT LIKE '00')) AS QQ ON 
                        系統跨部門權限表.姓名 = QQ.姓名
                WHERE  (使用者權限管理表.姓名 LIKE N'" & PA47 & "') AND (系統跨部門權限表.授權 = 1) AND (系統跨部門權限表.姓名 NOT LIKE N'" & PA47 & "') AND 使用者權限管理表.CC63 = 0
                ORDER BY QQ.級別"
        CmdSet_For_DGV()
    End Sub
    Friend Sub SQL_系統組織結構圖_部門()
        ConnOpen() : SQL1 = "SELECT 部門 FROM HX部門清單 WHERE (部門 NOT LIKE N'%NA') AND (部門 NOT LIKE N'9%') ORDER BY 部門" : CmdSet_For_dr()
    End Sub
    Friend Sub SQL_系統組織結構圖_部門_人員()
        ConnOpen()
        SQL1 = "SELECT  姓名 FROM  使用者權限管理表 WHERE (部門 LIKE N'" & PA & "') AND (處別 LIKE N'00.NA') AND (課別 LIKE N'000.NA') AND (組別 LIKE N'0000.NA') AND CC63 = 0"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_系統組織結構圖_處別()
        ConnOpen()
        SQL1 = "SELECT 處 FROM HX職稱清單 WHERE (部 LIKE N'" & PA & "') AND (處 NOT LIKE N'%NA') AND (處 NOT LIKE N'9%') GROUP BY   處 ORDER BY   處"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_系統組織結構圖_處別1()
        ConnOpen()
        SQL1 = "SELECT 處 FROM HX職稱清單 WHERE (處 NOT LIKE N'%NA') AND (處 NOT LIKE N'9%')  GROUP BY 處 ORDER BY   處"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_系統組織結構圖_處別_人員()
        ConnOpen()
        SQL1 = "SELECT  姓名 FROM  使用者權限管理表 WHERE (處別 LIKE N'" & PA & "') AND (課別 LIKE N'000.NA') AND (組別 LIKE N'0000.NA') AND CC63 = 0"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_系統組織結構圖_課別()
        ConnOpen()
        SQL1 = "SELECT 課 FROM HX職稱清單 WHERE (部 LIKE N'" & PA & "') AND (處 LIKE N'" & PA1 & "') AND (課 NOT LIKE N'%NA') AND (課 NOT LIKE N'9%') GROUP BY   課 ORDER BY   課"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_系統組織結構圖_課別1()
        ConnOpen()
        SQL1 = "SELECT 課 FROM HX職稱清單 WHERE (課 NOT LIKE N'%NA') AND (課 NOT LIKE N'9%') GROUP BY   課 ORDER BY   課"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_系統組織結構圖_課別_人員()
        ConnOpen()
        SQL1 = "SELECT  姓名 FROM  使用者權限管理表 WHERE (課別 LIKE N'" & PA & "') AND (組別 LIKE N'0000.NA') AND CC63 = 0"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_系統組織結構圖_組別()
        ConnOpen()
        SQL1 = "SELECT 組 FROM HX職稱清單 
                WHERE (部 LIKE N'" & PA & "') AND (處 LIKE N'" & PA1 & "') AND (課 LIKE N'" & PA2 & "')  AND (組 NOT LIKE N'%NA') AND (組 NOT LIKE N'9%') GROUP BY   組 ORDER BY   組"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_系統組織結構圖_組別1()
        ConnOpen()
        SQL1 = "SELECT 組 FROM HX職稱清單 WHERE (組 NOT LIKE N'%NA') AND (組 NOT LIKE N'9%') GROUP BY 組 ORDER BY 組"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_系統組織結構圖_組別_人員()
        ConnOpen()
        SQL1 = "SELECT  姓名 FROM  使用者權限管理表 WHERE (組別 LIKE N'" & PA & "') AND CC63 = 0"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_系統組織結構圖_人員()
        ConnOpen()
        SQL1 = "SELECT      使用者權限管理表.姓名, 使用者權限管理表.職稱, 使用者權限管理表.級別, 使用者權限管理表.部門, 
                            使用者權限管理表.處別, 使用者權限管理表.課別, 使用者權限管理表.組別, 
                            使用者權限管理表.帳號
                FROM              使用者權限管理表 INNER JOIN
                                (SELECT            系統跨部門權限表.姓名
                                  FROM             系統跨部門權限表 INNER JOIN
                                                   HX職稱清單 ON 系統跨部門權限表.職稱 = HX職稱清單.職稱
                                  WHERE           (系統跨部門權限表.授權 = 1) AND (系統跨部門權限表.姓名 NOT LIKE N'NA') AND 
                                                  (系統跨部門權限表.姓名 NOT LIKE N'李協叡') AND 
                                                  (系統跨部門權限表.姓名 NOT LIKE N'LIN HSING HAO') AND 
                                                  (系統跨部門權限表.姓名 NOT LIKE N'%test%') AND 
                                                  (系統跨部門權限表.姓名 NOT LIKE N'%測試%') AND 
                                                  (HX職稱清單.部 LIKE N'" & PA & "') OR
                                                  (系統跨部門權限表.授權 = 1) AND (系統跨部門權限表.姓名 NOT LIKE N'NA') AND 
                                                  (系統跨部門權限表.姓名 NOT LIKE N'李協叡') AND 
                                                  (系統跨部門權限表.姓名 NOT LIKE N'LIN HSING HAO') AND 
                                                  (系統跨部門權限表.姓名 NOT LIKE N'%test%') AND 
                                                  (系統跨部門權限表.姓名 NOT LIKE N'%測試%') AND 
                                                  (HX職稱清單.處 LIKE N'" & PA & "') OR
                                                  (系統跨部門權限表.授權 = 1) AND (系統跨部門權限表.姓名 NOT LIKE N'NA') AND 
                                                  (系統跨部門權限表.姓名 NOT LIKE N'李協叡') AND 
                                                  (系統跨部門權限表.姓名 NOT LIKE N'LIN HSING HAO') AND 
                                                  (系統跨部門權限表.姓名 NOT LIKE N'%test%') AND 
                                                  (系統跨部門權限表.姓名 NOT LIKE N'%測試%') AND 
                                                  (HX職稱清單.課 LIKE N'" & PA & "') OR
                                                  (系統跨部門權限表.授權 = 1) AND (系統跨部門權限表.姓名 NOT LIKE N'NA') AND 
                                                  (系統跨部門權限表.姓名 NOT LIKE N'李協叡') AND 
                                                  (系統跨部門權限表.姓名 NOT LIKE N'LIN HSING HAO') AND 
                                                  (系統跨部門權限表.姓名 NOT LIKE N'%test%') AND 
                                                  (系統跨部門權限表.姓名 NOT LIKE N'%測試%') AND 
                                                  (HX職稱清單.組 LIKE N'" & PA & "')
                GROUP BY   系統跨部門權限表.姓名) AS QQQ ON 使用者權限管理表.姓名 = QQQ.姓名
                WHERE      使用者權限管理表.CC63 = 0
                ORDER BY   使用者權限管理表.級別"
        CmdSet_For_DGV()
    End Sub
    Friend Sub SQL_人員ID卡系統配置設定_清單()
        ConnOpen()
        If Val(登入人級別) <= 1 Then
            SQL1 = "SELECT 姓名, 帳號, 部門, 課別, 組別, 職稱, ID卡號 FROM 使用者權限管理表 WHERE CC63 = 0 ORDER BY 職稱"
        Else
            SQL1 = "SELECT 姓名, 帳號, 部門, 課別, 組別, 職稱, ID卡號 FROM 使用者權限管理表 WHERE CC24 = 0 AND CC63 = 0 ORDER BY 職稱"
        End If
        CmdSet_For_DGV()
    End Sub
    Friend Sub SQL_人員ID卡系統配置設定_配卡()
        ConnOpen()
        SQL1 = "UPDATE 使用者權限管理表 SET ID卡號 = N'" & PA42 & "'  WHERE (帳號 = N'" & PA43 & "') AND (姓名 = N'" & PA44 & "')"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_人員ID卡系統配置設定_驗證()
        ConnOpen() : SQL1 = "SELECT ID卡號 FROM 使用者權限管理表 WHERE (ID卡號 LIKE N'" & PA42 & "')" : CmdSet_For_dr()
    End Sub
    Friend Sub SQL_系統帳號確認()
        ConnOpen() : SQL1 = "SELECT 帳號 FROM 使用者權限管理表 WHERE (帳號 LIKE N'" & PA32 & "')" : CmdSet_For_dr()
    End Sub
    Friend Sub SQL_考勤明細表_人員()
        ConnOpen()
        SQL1 = "SELECT  密碼 AS [No.], 帳號, 姓名, CC63 AS 離職, 月薪, 時薪, 主管加級, 職務加級, 勞保費, 健保費, 到職日, CC18 
                FROM    使用者權限管理表  WHERE 級別 NOT LIKE N'00' " & SQL2 & " ORDER BY CC63, 帳號"
        CmdSet_For_DGV()
    End Sub
    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 帳號 FROM 使用者權限管理表 WHERE (姓名 LIKE N'" & gUserName & "')" : CmdSet_For_dr()
    End Sub
    Friend Sub SQL_離職復職()
        ConnOpen() : SQL1 = "UPDATE 使用者權限管理表 SET CC63 = N'" & PA & "' WHERE (姓名 LIKE N'" & 到離職管理.申請人_tb.Text & "')" : CmdSet_For_dr()
    End Sub
    Friend Sub SQL_申請新增1()
        ConnOpen()
        SQL1 = "INSERT INTO 人事請假單  (員工編號, 日期, 請假類別,事由,是否生效)
                VALUES (N'" & 到離職管理.員工編號_tb.Text & "',N'" & 到離職管理.特假日期_tb.Text & "',
                 N'" & 到離職管理.請假類別_cb.Text & "' , N'" & 到離職管理.事由_tb.Text & "','申請中')"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_申請刪除1()
        ConnOpen() : SQL1 = "DELETE FROM  人事請假單  WHERE 日期 LIKE N'" & 到離職管理.特假日期_tb.Text & "' AND 員工編號 LIKE N'" & 到離職管理.員工編號_tb.Text & "'" : CmdSet_For_dr()
    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_請假圖()
        ConnOpen_圖庫SQL() : SQL1 = "SELECT 圖片 FROM 請假圖片庫 WHERE 流水號 LIKE '" & PA2 & "'" : 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 = "UPDATE  人事請假單  SET   請假類別= N'" & 休假申請.請假類別_cb.Text & "',事由= N'" & 休假申請.事由_tb.Text & "', 
                        圖片資料庫 = N'" & 休假申請.資料指定圖庫_tb.Text & "', 圖片編號 = N'" & 休假申請.圖片流水號_tb.Text & "', 
                        申請時數 = N'" & 休假申請.請休假時數_cb.Text & "'
                Where   日期 Like N'" & 休假申請.特假日期_tb.Text & "' AND 員工編號 LIKE N'" & 休假申請.員工編號_tb.Text & "'"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_請假申請新增()
        ConnOpen()
        SQL1 = "INSERT INTO 人事請假單  ( 員工編號, 日期, 請假類別,事由,是否生效, 圖片資料庫, 圖片編號, 申請時數, 申請時間)
                VALUES (N'" & 休假申請.員工編號_tb.Text & "',N'" & 休假申請.特假日期_tb.Text & "',
                        N'" & 休假申請.請假類別_cb.Text & "' , N'" & 休假申請.事由_tb.Text & "','申請中', 
                        N'" & 休假申請.資料指定圖庫_tb.Text & "', N'" & 休假申請.圖片流水號_tb.Text & "', 
                        N'" & 休假申請.請休假時數_cb.Text & "', N'" & Strings.Format(Today(), "yyyy/MM/dd") & "')"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_申請刪除()
        ConnOpen()
        SQL1 = "DELETE FROM  人事請假單  WHERE 日期 LIKE N'" & 休假申請.特假日期_tb.Text & "' AND 員工編號 LIKE N'" & 休假申請.員工編號_tb.Text & "'"
        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()
        SQL1 = "SELECT 使用者權限管理表.姓名, 人事請假單.員工編號 AS 編號, 人事請假單.日期, 萬年曆.星期, 人事請假單.請假類別, 
                       人事請假單.事由, 人事請假單.是否生效, 人事請假單.核准人, 人事請假單.核准日期, 圖片資料庫, 圖片編號, 人事請假單.申請時數, 人事請假單.申請時間
                FROM   人事請假單 INNER JOIN
                       萬年曆 ON 人事請假單.日期 = 萬年曆.日期 INNER JOIN
                       使用者權限管理表 ON 人事請假單.員工編號 = 使用者權限管理表.帳號
                WHERE (人事請假單.是否生效 NOT LIKE N'已核准')
                ORDER BY 使用者權限管理表.姓名, 人事請假單.日期"
        CmdSet_For_DGV()
    End Sub
    Friend Sub SQL_核准修改()
        ConnOpen()
        SQL1 = "UPDATE  人事請假單  SET   核准人= N'" & gUserName & "',核准日期= N'" & DTP & "',是否生效= N'" & PA & "'
                Where 日期 Like N'" & 休假核准.請假日期_tb.Text & "' AND 員工編號 LIKE N'" & 休假核准.員工編號_tb.Text & "'"
        CmdSet_For_dr()
    End Sub
    Friend Sub SQL_休假清單()
        ConnOpen()
        SQL1 = "SELECT 使用者權限管理表.姓名, 人事請假單.員工編號 AS 編號, 人事請假單.日期, 萬年曆.星期, 人事請假單.請假類別, 
                       人事請假單.事由, 人事請假單.是否生效, 人事請假單.核准人, 人事請假單.核准日期, 人事請假單.圖片資料庫, 
                       人事請假單.圖片編號, 人事請假單.申請時數
                FROM   人事請假單 INNER JOIN
                       萬年曆 ON 人事請假單.日期 = 萬年曆.日期 INNER JOIN
                       使用者權限管理表 ON 人事請假單.員工編號 = 使用者權限管理表.帳號
                WHERE (人事請假單.請假類別 NOT LIKE N'國定假日') AND (人事請假單.請假類別 NOT LIKE N'未到') AND 
                      (人事請假單.請假類別 NOT LIKE N'離職')  AND (人事請假單.員工編號 LIKE N'" & PA & "')
                ORDER BY 使用者權限管理表.姓名, 人事請假單.日期 DESC"
        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()
        SQL1 = "SELECT     使用者權限管理表.帳號 AS [No.], 使用者權限管理表.帳號 AS 編號, 使用者權限管理表.姓名
                FROM       使用者權限管理表 LEFT OUTER JOIN
                           ras_AttRecord ON 使用者權限管理表.帳號 = ras_AttRecord.DIN
                WHERE     (使用者權限管理表.級別 NOT LIKE N'00') " & SQL2 & "
                GROUP BY   使用者權限管理表.帳號, 使用者權限管理表.姓名
                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 = "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_圖庫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()
        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 員工編號 LIKE N'" & 加班申請.員工編號_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 員工編號 LIKE N'" & 加班申請.員工編號_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      使用者權限管理表.姓名, 加班申請單.員工編號, 加班申請單.日期, 萬年曆.星期, 萬年曆.下診, 加班申請單.加班狀態, 
                            加班申請單.事由紀錄, 加班申請單.核准人1, 加班申請單.核准日期1, 加班申請單.核准人2, 加班申請單.核准日期2, 
                            加班申請單.是否生效, 加班申請單.圖片資料庫, 加班申請單.圖片編號
                FROM        加班申請單 INNER JOIN
                            萬年曆 ON 加班申請單.日期 = 萬年曆.日期 LEFT OUTER JOIN
                            使用者權限管理表 ON 加班申請單.員工編號 = 使用者權限管理表.帳號
                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      使用者權限管理表.姓名, 加班申請單.員工編號, 加班申請單.日期, 萬年曆.星期, 萬年曆.下診, 加班申請單.加班狀態, 
                            加班申請單.事由紀錄, 加班申請單.核准人1, 加班申請單.核准日期1, 加班申請單.核准人2, 加班申請單.核准日期2, 
                            加班申請單.是否生效, 加班申請單.圖片資料庫, 加班申請單.圖片編號
                FROM        加班申請單 INNER JOIN
                            萬年曆 ON 加班申請單.日期 = 萬年曆.日期 LEFT OUTER JOIN
                            使用者權限管理表 ON 加班申請單.員工編號 = 使用者權限管理表.帳號
                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 員工編號 LIKE N'" & 加班審核.員工編號_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 員工編號 LIKE N'" & 加班審核.員工編號_tb.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_排班系統_月份()
        ConnOpen()
        SQL1 = "SELECT  日期, 星期, 星期 AS 休假   FROM  萬年曆  WHERE  (日期 LIKE N'" & PA1 & "/" & PA2 & "%') ORDER BY 日期"
        CmdSet_For_DGV()
    End Sub
    Friend Sub SQL_人員動態_日曆(日期 As String)
        ConnOpen()
        SQL1 = "SELECT  DISTINCT  使用者權限管理表.姓名, 人事請假單.請假類別 AS 假別, 人事請假單.是否生效 AS 生效
                FROM    人事請假單 LEFT OUTER JOIN
                        使用者權限管理表 ON 人事請假單.員工編號 = 使用者權限管理表.帳號
                WHERE  (人事請假單.日期 LIKE N'" & 日期 & "')"
        CmdSet_For_DGV()
    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_考勤表ID查詢()
        ConnOpen() : SQL1 = "SELECT  ID FROM ras_AttRecord ORDER BY ID DESC" : CmdSet_For_dr()
    End Sub
    Friend Sub SQL_時間新增(ID As String)
        ConnOpen()
        SQL1 = "INSERT INTO ras_AttRecord (ID, DN, DIN, Clock, VerifyMode, Action, AttTypeId, CollectDate, JobCode, Antipassback, LastUpdatedUID, 
                            LastUpdatedDate, Remark) 
                VALUES (N'" & ID & "', '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_考勤明細表_月份考勤()  '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 二段加班, 萬年曆.下診 AS 半天, 萬年曆.下診 AS 班別, 萬年曆.下診 AS 最後下診, 
                         BB.申請狀態, BB.加班狀態, AA.申請時數
                FROM     萬年曆  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()
        ', QQ.半天, QQ.班別
        'LEFT OUTER JOIN
        '                (SELECT 排班資料表.日期, 排班資料表.項次, 排班資料表.姓名, 排班資料表.班別, 排班資料表.上班時段, 
        '                        排班資料表.時數, 排班資料表.半天, 排班資料表.休息, 排班資料表.一段, 排班資料表.二段,
        '                        排班資料表.排時, 使用者權限管理表.帳號
        '                 FROM 排班資料表 INNER JOIN 使用者權限管理表 ON 排班資料表.姓名 = 使用者權限管理表.姓名
        '                 WHERE (排班資料表.日期 LIKE N'" & PA1 & "/" & PA2 & "%') AND (使用者權限管理表.帳號 = " & PA & ")) AS QQ ON 萬年曆.日期 = QQ.日期
    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   ID AS [No.], ID, CONVERT(varchar(100), Clock, 120) AS 打卡時間
                FROM     ras_AttRecord
                WHERE   (DIN LIKE '" & 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 LIKE '" & 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 LIKE '" & 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 LIKE '" & 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 LIKE '" & 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 萬年曆 WHERE   日期 LIKE N'" & PA1 & "/" & PA2 & "%' ORDER BY 日期"
        CmdSet_For_DGV()
    End Sub
    Friend Sub SQL_考勤明細表_年份_下拉()
        ConnOpen() : SQL1 = "SELECT  年份 FROM 年份清單 ORDER BY 年份 DESC" : CmdSet_For_dr()
    End Sub
End Module
