Açıklama Yok
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

SQL_排班系統.vb 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. Module SQL_排班系統
  2. Friend Sub SQL_排班系統_月份()
  3. ConnOpen()
  4. SQL1 = "SELECT 萬年曆.日期, 萬年曆.星期, AQAQ.請假類別 AS 休假
  5. FROM 萬年曆 LEFT OUTER JOIN
  6. (SELECT 日期 AS 日, 請假類別 FROM 人事請假單
  7. WHERE (請假類別 NOT LIKE N'特休') AND (請假類別 NOT LIKE N'%假') AND (請假類別 NOT LIKE N'未到') AND (請假類別 NOT LIKE N'離職')
  8. GROUP BY 日期, 請假類別) AS AQAQ ON 萬年曆.日期 = AQAQ.日
  9. WHERE (萬年曆.日期 LIKE N'" & PA1 & "/" & PA2 & "%')"
  10. CmdSet_For_DGV()
  11. End Sub
  12. Friend Sub SQL_排班系統_人員排班()
  13. ConnOpen()
  14. SQL1 = "SELECT 排班資料表.姓名, COUNT(排班資料表.姓名) AS 天數, SUM(排班資料表.排時) AS 本月應上時數,
  15. SUM(CASE WHEN AA.請假類別 IS NULL THEN 排班資料表.排時 ELSE 0 END) AS 已排班時數,
  16. SUM(CASE WHEN AA.請假類別 IS NULL THEN 0 ELSE 排班資料表.排時 END) AS 未排班時數,
  17. SUM(CASE WHEN AA.請假類別 = '國定假日' OR
  18. 萬年曆.星期 = '星期六' THEN 1 ELSE 0 END) AS 假日出勤, SUM(排班資料表.後段) AS 後段
  19. FROM 排班資料表 LEFT OUTER JOIN
  20. 萬年曆 ON 排班資料表.日期 = 萬年曆.日期 LEFT OUTER JOIN
  21. (SELECT 日期, 請假類別
  22. FROM 人事請假單
  23. WHERE (請假類別 LIKE '國定假日') AND (日期 LIKE N'" & PA & "%')
  24. GROUP BY 日期, 請假類別) AS AA ON 排班資料表.日期 = AA.日期
  25. WHERE (排班資料表.日期 LIKE N'" & PA & "%') AND (排班資料表.姓名 NOT LIKE '') AND (排班資料表.班別 NOT LIKE N'休%')
  26. GROUP BY 排班資料表.姓名
  27. ORDER BY 排班資料表.姓名"
  28. CmdSet_For_DGV()
  29. End Sub
  30. Friend Sub SQL_排班系統_當天排班()
  31. ConnOpen()
  32. If 排班資料.職員_ch.Checked = True Then
  33. SQL1 = "SELECT 班別, STRING_AGG(姓名, N'、') AS 人員 FROM 排班資料表
  34. WHERE (日期 LIKE N'" & PA & "') AND (姓名 NOT LIKE N'') AND (排班資料表.班別 NOT LIKE N'休%')
  35. GROUP BY 班別 ORDER BY 班別"
  36. ElseIf 排班資料.請休假_ch.Checked = True Then
  37. SQL1 = "SELECT 人事請假單.請假類別 AS 班別, STRING_AGG(ras_Users.UserName, N'、') AS 人員
  38. FROM 人事請假單 INNER JOIN ras_Users ON 人事請假單.員工編號 = ras_Users.DIN
  39. WHERE (人事請假單.請假類別 NOT LIKE '未到') AND (人事請假單.請假類別 NOT LIKE '國定假日') AND
  40. (人事請假單.請假類別 NOT LIKE '離職') AND (人事請假單.日期 LIKE N'" & PA & "')
  41. GROUP BY 人事請假單.請假類別 ORDER BY 人事請假單.請假類別"
  42. ElseIf 排班資料.醫生_ch.Checked = True Then
  43. SQL1 = "SELECT 班別, 人員
  44. FROM (SELECT 診別 + '-' + '早' AS 班別, 早 AS 人員 FROM 門診資料 WHERE (日期 LIKE N'" & PA & "')
  45. UNION
  46. SELECT 診別 + '-' + '中' AS 班別, 中 AS 人員 FROM 門診資料 AS 門診資料_2 WHERE (日期 LIKE N'" & PA & "')
  47. UNION
  48. SELECT 診別 + '-' + '晚' AS 班別, 晚 AS 人員 FROM 門診資料 AS 門診資料_1 WHERE (日期 LIKE N'" & PA & "')) AS SubQuery
  49. ORDER BY CASE WHEN 班別 LIKE '%早' THEN 1 WHEN 班別 LIKE '%中' THEN 2 WHEN 班別 LIKE '%晚' THEN 3 END"
  50. End If
  51. CmdSet_For_DGV()
  52. End Sub
  53. Friend Sub SQL_排班系統_班別_下拉()
  54. ConnOpen() : SQL1 = "SELECT 時段 FROM 時段設定 ORDER BY ID" : CmdSet_For_dr()
  55. End Sub
  56. Friend Sub SQL_排班系統_職務_下拉()
  57. ConnOpen() : SQL1 = "SELECT 職務 FROM 工作職務 ORDER BY 職務" : CmdSet_For_dr()
  58. End Sub
  59. Friend Sub SQL_排班系統_班別_人員()
  60. ConnOpen()
  61. SQL1 = "SELECT DIN AS [No.], DIN AS 編號, UserName AS 姓名
  62. FROM ras_Users
  63. WHERE (IsLockedOut = 0) AND (DIN <> 18) AND (DIN <> 19) AND (DIN <> 21)
  64. ORDER BY CAST(Password AS int)"
  65. CmdSet_For_DGV()
  66. End Sub
  67. Friend Sub SQL_排班系統_班別_人員_全()
  68. ConnOpen()
  69. SQL1 = "SELECT DIN AS [No.], DIN AS 編號, UserName AS 姓名
  70. FROM ras_Users
  71. WHERE (DIN <> 18) AND (DIN <> 19) AND (DIN <> 21)
  72. ORDER BY CAST(Password AS int)"
  73. CmdSet_For_DGV()
  74. End Sub
  75. Friend Sub SQL_排班系統_班別_排班()
  76. ConnOpen()
  77. SQL1 = "SELECT 排班資料表.姓名, 排班資料表.班別, 排班資料表.上班時段, 排班資料表.時數, 排班資料表.半天, 排班資料表.休息,
  78. 排班資料表.一段, 排班資料表.二段, 排班資料表.顏色1, 排班資料表.顏色2, 排班資料表.項次,
  79. CAST(排班資料表.項次 AS INT) AS 項, AA.請假類別, 排班資料表.後段
  80. FROM (SELECT 人事請假單.請假類別, ras_Users.UserName, 人事請假單.是否生效
  81. FROM 人事請假單 INNER JOIN ras_Users ON 人事請假單.員工編號 = ras_Users.DIN
  82. WHERE (人事請假單.請假類別 NOT LIKE '未到') AND (人事請假單.請假類別 NOT LIKE '國定假日') AND
  83. (人事請假單.請假類別 NOT LIKE '離職') AND (人事請假單.是否生效 NOT LIKE N'未核准') AND (人事請假單.日期 LIKE N'" & PA & "'))
  84. AS AA RIGHT OUTER JOIN 排班資料表 ON AA.UserName = 排班資料表.姓名
  85. WHERE (排班資料表.日期 LIKE N'" & PA & "')
  86. ORDER BY 項"
  87. CmdSet_For_DGV()
  88. End Sub
  89. Friend Sub SQL_排班系統_個人整月排班()
  90. ConnOpen()
  91. SQL1 = "SELECT RIGHT(日期, 2) AS 項次, 姓名, 班別, 上班時段, 時數, 半天, 休息, 一段, 二段, 顏色1, 顏色2, 後段
  92. FROM 排班資料表
  93. WHERE (日期 LIKE N'" & PA & "%') AND (姓名 LIKE N'" & PA2 & "')
  94. ORDER BY 日期"
  95. CmdSet_For_DGV()
  96. End Sub
  97. Friend Sub SQL_排班系統_個人整月星期()
  98. ConnOpen()
  99. SQL1 = "SELECT 星期, 班表簽認 FROM 萬年曆 WHERE (日期 LIKE N'" & PA & "%') ORDER BY 日期"
  100. CmdSet_For_DGV()
  101. End Sub
  102. Friend Sub SQL_排班明細_判斷是否有資料()
  103. ConnOpen() : SQL1 = "SELECT 日期 FROM 排班資料表 WHERE 日期 LIKE N'" & PA & "'" : CmdSet_For_dr()
  104. End Sub
  105. Friend Sub SQL_排班明細_刪除當天()
  106. ConnOpen() : SQL1 = "DELETE 排班資料表 WHERE 日期 LIKE N'" & PA & "'" : CmdSet_For_dr()
  107. End Sub
  108. Friend Sub SQL_排班明細_新增當天()
  109. ConnOpen()
  110. SQL1 = "INSERT INTO 排班資料表 (日期, 項次, 姓名, 班別, 上班時段, 時數, 半天, 休息, 一段, 二段, 排時, 顏色1, 顏色2, 後段)
  111. VALUES (N'" & PA & "', N'" & PA1 & "', N'" & PA2 & "', N'" & PA3 & "', N'" & PA4 & "', N'" & Do2 & "', N'" & BL1 & "', " & Do1 & ", N'" & PA5 & "', N'" & PA6 & "', N'" & Do3 & "',
  112. N'" & PA7 & "', N'" & PA8 & "', N'" & PA9 & "')"
  113. CmdSet_For_dr()
  114. End Sub
  115. Friend Sub SQL_排班簽核讀取()
  116. ConnOpen() : SQL1 = "SELECT 班表簽認, 值日生1, 值日生2 FROM 萬年曆 WHERE 日期 LIKE N'" & PA & "'" : CmdSet_For_dr()
  117. End Sub
  118. Friend Sub SQL_排班簽核()
  119. ConnOpen() : SQL1 = "UPDATE 萬年曆 SET 班表簽認 = N'Y' WHERE 日期 LIKE N'" & PA & "'" : CmdSet_For_dr()
  120. End Sub
  121. Friend Sub SQL_值日生存檔()
  122. ConnOpen() : SQL1 = "UPDATE 萬年曆 SET 值日生1 = N'" & PA13 & "', 值日生2 = N'" & PA14 & "' WHERE 日期 LIKE N'" & PA & "'" : CmdSet_For_dr()
  123. End Sub
  124. Friend Sub SQL_排班明細_上午上班()
  125. ConnOpen() : SQL1 = "SELECT 上午上班 FROM 時段設定 WHERE 時段 like N'" & PA3 & "'" : CmdSet_For_dr()
  126. End Sub
  127. Friend Sub SQL_排班系統_星期()
  128. ConnOpen()
  129. SQL1 = "SELECT 星期 FROM 萬年曆 WHERE (萬年曆.日期 LIKE N'" & PA & "%')"
  130. CmdSet_For_dr()
  131. End Sub
  132. Friend Sub SQL_門診_健保()
  133. ConnOpen()
  134. SQL1 = "SELECT 星期, 診別, 早, 中, 晚 FROM 門診資料 WHERE 日期 LIKE N'" & PA & "' AND 診別 LIKE N'健保'"
  135. CmdSet_For_dr()
  136. End Sub
  137. Friend Sub SQL_門診_美容()
  138. ConnOpen()
  139. SQL1 = "SELECT 星期, 診別, 早, 中, 晚 FROM 門診資料 WHERE 日期 LIKE N'" & PA & "' AND 診別 LIKE N'醫美'"
  140. CmdSet_For_dr()
  141. End Sub
  142. Friend Sub SQL_人員備註()
  143. ConnOpen()
  144. SQL1 = "SELECT 人員備註, 職位, 性質, 早班, 晚班, 崗位01, 崗位02, 崗位03, 崗位04, 崗位05, 崗位06, 崗位07, 崗位08, 穩定 FROM 使用者權限管理表 WHERE (DIN LIKE N'" & PA & "')"
  145. CmdSet_For_dr()
  146. End Sub
  147. Friend Sub SQL_人員備註修改()
  148. ConnOpen()
  149. SQL1 = "UPDATE 使用者權限管理表 SET 人員備註 = N'" & PA10 & "', 職位 = N'" & PA11 & "', 性質 = N'" & PA12 & "', 早班 = N'" & PA13 & "', 晚班 = N'" & PA14 & "', 崗位01 = N'" & PA9 & "',
  150. 崗位02 = N'" & PA8 & "', 崗位03 = N'" & PA7 & "', 崗位04 = N'" & PA6 & "', 崗位05 = N'" & PA5 & "', 崗位06 = N'" & PA4 & "', 崗位07 = N'" & PA3 & "',
  151. 崗位08 = N'" & PA2 & "', 穩定 = N'" & PA1 & "'
  152. WHERE (DIN LIKE N'" & PA & "')"
  153. CmdSet_For_dr()
  154. End Sub
  155. Friend Sub SQL_人員備註清單()
  156. ConnOpen()
  157. SQL1 = "SELECT ras_Users.DIN AS [No.], ras_Users.DIN AS 編號, ras_Users.UserName AS 姓名, 使用者權限管理表.職位,
  158. 使用者權限管理表.性質, 使用者權限管理表.早班, 使用者權限管理表.晚班, 使用者權限管理表.崗位01 AS [1F掛號],
  159. 使用者權限管理表.崗位02 AS [1F掛號(實)], 使用者權限管理表.崗位03 AS [1F跟診], 使用者權限管理表.崗位04 AS [1F治療],
  160. 使用者權限管理表.崗位05 AS [1F治療(實)], 使用者權限管理表.崗位06 AS [2F櫃台], 使用者權限管理表.崗位07 AS [2F醫美],
  161. 使用者權限管理表.崗位08 AS [行政], 使用者權限管理表.穩定, 使用者權限管理表.人員備註
  162. FROM ras_Users INNER JOIN 使用者權限管理表 ON ras_Users.DIN = 使用者權限管理表.DIN
  163. WHERE (ras_Users.IsLockedOut = 0) AND (ras_Users.DIN <> 18) AND (ras_Users.DIN <> 19) AND (ras_Users.DIN <> 21)
  164. ORDER BY CAST(ras_Users.Password AS int)"
  165. CmdSet_For_DGV()
  166. End Sub
  167. End Module