Sin descripción
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.

休假申請.vb 18KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. Imports System.IO
  2. Public Class 休假申請
  3. ReadOnly ds, ds1 As New DataSet
  4. Dim 生效 As String : Dim 圖片新建, 剛開啟 As Boolean
  5. Private Sub 讀取人員資料表()
  6. 人員_dgv.DataSource = Nothing : ds.Clear()
  7. 人員_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  8. 人員_dgv.ColumnHeadersHeight = 25
  9. 人員_dgv.AllowUserToAddRows = False
  10. SQL_考勤明細表_人員()
  11. da.Fill(ds) : 人員_dgv.DataSource = ds.Tables(0) : conn.Close()
  12. 人員_dgv.Columns(0).FillWeight = 70 : 人員_dgv.Columns(1).FillWeight = 80 : 人員_dgv.Columns(2).FillWeight = 100 : 人員_dgv.Columns(3).Visible = False
  13. 人員_dgv.Columns(4).Visible = False : 人員_dgv.Columns(5).Visible = False : 人員_dgv.Columns(6).Visible = False : 人員_dgv.Columns(7).Visible = False
  14. 人員_dgv.Columns(8).Visible = False : 人員_dgv.Columns(9).Visible = False : 人員_dgv.Columns("到職日").Visible = False : 人員_dgv.Columns("CC18").Visible = False
  15. For i As Integer = 0 To 人員_dgv.Rows.Count - 1
  16. 人員_dgv.Rows(i).Cells("No.").Value = i + 1
  17. Next
  18. End Sub
  19. Private Sub 年份_下拉表單資料載入()
  20. SQL_考勤明細表_年份_下拉()
  21. 年份_cb.Items.Clear()
  22. While (dr.Read()) : 年份_cb.Items.Add(dr("年份")) : End While
  23. conn.Close()
  24. End Sub
  25. Private Sub Set_考勤明細()
  26. 月清單_DGV.DataSource = Nothing : ds1.Clear()
  27. 月清單_DGV.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  28. 月清單_DGV.ColumnHeadersHeight = 40
  29. 月清單_DGV.AllowUserToAddRows = False
  30. PA = 員工編號_tb.Text : PA1 = 年份_cb.Text : PA2 = 月份_cb.Text : SQL_國定假日設定_月份考勤()
  31. da.Fill(ds1) : 月清單_DGV.DataSource = ds1.Tables(0) : conn.Close()
  32. 月清單_DGV.Columns(0).FillWeight = 80 : 月清單_DGV.Columns(1).FillWeight = 80 : 月清單_DGV.Columns(2).FillWeight = 90 : 月清單_DGV.Columns(3).FillWeight = 90
  33. 月清單_DGV.Columns("圖片資料庫").Visible = False : 月清單_DGV.Columns("圖片編號").Visible = False : 月清單_DGV.Columns(5).Visible = False
  34. 月清單_DGV.Columns(6).Visible = False : 月清單_DGV.Columns("申請時數").FillWeight = 50 : 月清單_DGV.Columns("申請時間").FillWeight = 80
  35. For I As Integer = 0 To 月清單_DGV.Rows.Count - 1
  36. If Strings.Left(月清單_DGV.Rows(I).Cells("請假類別").Value.ToString, 3) = "補上班" Then : 月清單_DGV.Rows(I).DefaultCellStyle.BackColor = Color.White
  37. ElseIf 月清單_DGV.Rows(I).Cells("星期").Value.ToString = "星期日" Then : 月清單_DGV.Rows(I).DefaultCellStyle.BackColor = Color.LightPink
  38. ElseIf 月清單_DGV.Rows(I).Cells("星期").Value.ToString = "星期六" Then : 月清單_DGV.Rows(I).DefaultCellStyle.BackColor = Color.LightPink
  39. ElseIf 月清單_DGV.Rows(I).Cells("請假類別").Value.ToString = "國定假日" Then : 月清單_DGV.Rows(I).DefaultCellStyle.BackColor = Color.LightPink
  40. ElseIf 月清單_DGV.Rows(I).Cells("請假類別").Value.ToString <> "" Then : 月清單_DGV.Rows(I).DefaultCellStyle.BackColor = Color.LightYellow
  41. End If
  42. Next : 特假日期_tb.Text = 月清單_DGV("日期", 0).Value.ToString : Set_假期統計()
  43. End Sub
  44. Private Sub Set_假期統計()
  45. Dim ds As New DataSet
  46. 假期統計_dgv.DataSource = Nothing : ds.Clear()
  47. 假期統計_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  48. 假期統計_dgv.ColumnHeadersHeight = 25
  49. 假期統計_dgv.AllowUserToAddRows = False
  50. PA = 員工編號_tb.Text : PA1 = 特假日期_tb.Text : SQL_休假統計()
  51. da.Fill(ds) : 假期統計_dgv.DataSource = ds.Tables(0) : conn.Close()
  52. End Sub
  53. Private Sub 特休申請_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  54. Panel2.SendToBack() : 視窗2_pl.Visible = False : 剛開啟 = True
  55. WebBrowser2.Navigate(Environment.GetFolderPath(Environment.SpecialFolder.Desktop))
  56. End Sub
  57. Private Sub 特休申請_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
  58. SQL_資料庫選擇() : If dr.Read() Then : 預設圖片庫_tb.Text = dr("圖片資料庫").ToString : Else : MsgBox("圖片資料庫已滿,請找系統管理員!!") : Me.Close() : End If
  59. 年份_下拉表單資料載入() : 年份_cb.Text = Year(Today) : 月份_cb.SelectedIndex = Month(Today) - 1
  60. 請假類別_cb.SelectedIndex = 0 : PA1 = 年份_cb.Text : PA2 = 月份_cb.Text : 剛開啟 = False : 讀取人員資料表()
  61. If CC(16) = False Then : 人員_dgv.Enabled = False : 申請人_tb.Text = gUserName
  62. SQL_考勤明細表_讀取編號() : If dr.Read() Then : 員工編號_tb.Text = dr("DIN") : End If : Set_考勤明細()
  63. End If
  64. End Sub
  65. Private Sub 人員_dgv_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles 人員_dgv.CellClick
  66. If e.RowIndex = -1 Then : Else
  67. 員工編號_tb.Text = 人員_dgv("編號", e.RowIndex).Value.ToString : 申請人_tb.Text = 人員_dgv("姓名", e.RowIndex).Value.ToString
  68. 請休假時數_cb.Text = "" : Set_考勤明細()
  69. End If
  70. End Sub
  71. Private Sub 月清單_DGV_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles 月清單_DGV.CellClick
  72. If e.RowIndex = -1 Then : Else
  73. If 月清單_DGV.Rows(e.RowIndex).Cells("星期").Value.ToString = "星期六" Or 月清單_DGV.Rows(e.RowIndex).Cells("星期").Value.ToString = "星期日" Or
  74. 月清單_DGV.Rows(e.RowIndex).Cells("請假類別").Value.ToString = "國定假日" Then
  75. 特假日期_tb.Text = 月清單_DGV("日期", e.RowIndex).Value.ToString
  76. 事由_tb.Text = 月清單_DGV("事由", e.RowIndex).Value.ToString
  77. 生效 = 月清單_DGV("是否生效", e.RowIndex).Value.ToString
  78. 請假類別_cb.Text = 月清單_DGV("請假類別", e.RowIndex).Value.ToString
  79. 請休假時數_cb.Text = 月清單_DGV("申請時數", e.RowIndex).Value.ToString
  80. 資料指定圖庫_tb.Text = 月清單_DGV("圖片資料庫", e.RowIndex).Value.ToString : 圖片流水號_tb.Text = 月清單_DGV("圖片編號", e.RowIndex).Value.ToString
  81. '------------驗貨報告讀取--------------------------------------------------------------------------------------------
  82. If 資料指定圖庫_tb.Text <> "" And 圖片流水號_tb.Text <> "" Then
  83. 圖片庫 = 資料指定圖庫_tb.Text : SQL_連線字串_圖片資料庫() : PA2 = 圖片流水號_tb.Text
  84. SQL_請假圖() : PictureBox1.Image = Nothing
  85. While dr.Read() = True
  86. Dim unused As Byte() = New Byte(-1) {} : Dim bytes As Byte() = DirectCast(dr.Item("圖片"), Byte())
  87. Dim oStream As New MemoryStream(bytes) : PictureBox1.Image = Bitmap.FromStream(oStream)
  88. End While : conn.Close() : PictureBox1.SizeMode = 4
  89. Else
  90. PictureBox1.Image = Nothing
  91. End If
  92. Else
  93. 特假日期_tb.Text = 月清單_DGV("日期", e.RowIndex).Value.ToString
  94. 事由_tb.Text = 月清單_DGV("事由", e.RowIndex).Value.ToString
  95. 生效 = 月清單_DGV("是否生效", e.RowIndex).Value.ToString
  96. 請假類別_cb.Text = 月清單_DGV("請假類別", e.RowIndex).Value.ToString
  97. 請休假時數_cb.Text = 月清單_DGV("申請時數", e.RowIndex).Value.ToString
  98. 資料指定圖庫_tb.Text = 月清單_DGV("圖片資料庫", e.RowIndex).Value.ToString : 圖片流水號_tb.Text = 月清單_DGV("圖片編號", e.RowIndex).Value.ToString
  99. '------------驗貨報告讀取--------------------------------------------------------------------------------------------
  100. If 資料指定圖庫_tb.Text <> "" And 圖片流水號_tb.Text <> "" Then
  101. 圖片庫 = 資料指定圖庫_tb.Text : SQL_連線字串_圖片資料庫() : PA2 = 圖片流水號_tb.Text
  102. SQL_請假圖() : PictureBox1.Image = Nothing
  103. While dr.Read() = True
  104. Dim unused As Byte() = New Byte(-1) {} : Dim bytes As Byte() = DirectCast(dr.Item("圖片"), Byte())
  105. Dim oStream As New MemoryStream(bytes) : PictureBox1.Image = Bitmap.FromStream(oStream)
  106. End While : conn.Close() : PictureBox1.SizeMode = 4
  107. Else
  108. PictureBox1.Image = Nothing
  109. End If
  110. End If
  111. End If
  112. End Sub
  113. Private Sub 申請_bt_Click(sender As Object, e As EventArgs) Handles 申請_bt.Click
  114. If 特假日期_tb.Text = "" Or 請休假時數_cb.Text = "" Or 申請人_tb.Text = "" Then
  115. MsgBox("人員、日期、請休假時數 不能為空白!!")
  116. Else
  117. If 生效 = "已核准" Or 生效 = "未核准" Then : MsgBox("已簽核的資料不能再做修改") : Else
  118. SQL_請假申請讀取()
  119. If dr.Read Then : SQL_請假申請修改() : Else : SQL_請假申請新增() : End If
  120. Set_考勤明細() : MsgBox("儲存完成")
  121. End If
  122. End If
  123. End Sub
  124. Private Sub 刪除_bt_Click(sender As Object, e As EventArgs) Handles 刪除_bt.Click
  125. If 特假日期_tb.Text = "" Or 申請人_tb.Text = "" Then
  126. MsgBox("人員、日期、請休假時數 不能為空白!!")
  127. Else
  128. If 生效 = "已核准" Or 生效 = "未核准" Then : MsgBox("已簽核的資料不能再做修改")
  129. Else : SQL_申請刪除() : Set_考勤明細() : MsgBox("儲存完成") : End If
  130. End If
  131. End Sub
  132. Private Sub 確定導入_bt_Click(sender As Object, e As EventArgs) Handles 確定導入_bt.Click
  133. If 檔案路徑2_tb.Text <> "" Then
  134. If 特假日期_tb.Text = "" Or 請休假時數_cb.Text = "" Or 申請人_tb.Text = "" Then
  135. MsgBox("人員、日期、請休假時數 不能為空白!!")
  136. Else
  137. If 生效 = "已核准" Or 生效 = "未核准" Then : MsgBox("已簽核的資料不能再做修改") : Else
  138. SQL_請假申請讀取()
  139. If dr.Read Then
  140. 圖片導入準備() : SQL_請假申請修改() : 圖片導入()
  141. Else
  142. 圖片導入準備() : SQL_請假申請新增() : 圖片導入()
  143. End If
  144. Set_考勤明細() : MsgBox("圖片導入完成")
  145. Dim image As Image = Image.FromFile(檔案路徑2_tb.Text)
  146. PictureBox1.Image = image : PictureBox1.SizeMode = 4
  147. End If
  148. End If
  149. 檔案路徑2_tb.Text = ""
  150. Else : MsgBox("沒有準備圖片!!") : End If
  151. End Sub
  152. Private Sub 圖片導入準備()
  153. If 資料指定圖庫_tb.Text = "" Then
  154. 圖片庫 = 預設圖片庫_tb.Text : SQL_連線字串_圖片資料庫() : 資料指定圖庫_tb.Text = 預設圖片庫_tb.Text
  155. SQL_查詢最後一筆圖片編號1()
  156. If dr.Read() Then : 圖片流水號_tb.Text = dr("流水號").ToString : Else : 圖片流水號_tb.Text = "0" : End If : conn.Close()
  157. Dim NUM1 As Integer
  158. NUM1 = Double.Parse(Strings.Right(圖片流水號_tb.Text, 8)) + 1
  159. If NUM1 < 10 Then : 圖片流水號_tb.Text = "IR" & "0000000" & NUM1
  160. ElseIf NUM1 > 9 And NUM1 < 100 Then : 圖片流水號_tb.Text = "IR" & "000000" & NUM1
  161. ElseIf NUM1 > 99 And NUM1 < 1000 Then : 圖片流水號_tb.Text = "IR" & "00000" & NUM1
  162. ElseIf NUM1 > 999 And NUM1 < 10000 Then : 圖片流水號_tb.Text = "IR" & "0000" & NUM1
  163. ElseIf NUM1 > 9999 And NUM1 < 100000 Then : 圖片流水號_tb.Text = "IR" & "000" & NUM1
  164. ElseIf NUM1 > 99999 And NUM1 < 100000 Then : 圖片流水號_tb.Text = "IR" & "00" & NUM1
  165. ElseIf NUM1 > 999999 And NUM1 < 1000000 Then : 圖片流水號_tb.Text = "IR" & "0" & NUM1
  166. ElseIf NUM1 > 9999999 Then : 圖片流水號_tb.Text = "IR" & NUM1 : End If : 圖片新建 = True
  167. Else
  168. 圖片庫 = 資料指定圖庫_tb.Text : SQL_連線字串_圖片資料庫() : 圖片新建 = False
  169. End If
  170. End Sub
  171. Private Sub 圖片導入()
  172. If 圖片新建 = True Then
  173. PA49 = 檔案路徑2_tb.Text : SQL_新增請假圖()
  174. Else
  175. PA49 = 檔案路徑2_tb.Text : SQL_修改請假圖()
  176. End If
  177. End Sub
  178. Private Sub 月份_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 月份_cb.SelectedIndexChanged
  179. If 剛開啟 = False Then : PA1 = 年份_cb.Text : PA2 = 月份_cb.Text : 讀取人員資料表() : Set_考勤明細() : End If
  180. End Sub
  181. Private Sub 年份_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 年份_cb.SelectedIndexChanged
  182. If 剛開啟 = False Then : PA1 = 年份_cb.Text : PA2 = 月份_cb.Text : 讀取人員資料表() : Set_考勤明細() : End If
  183. End Sub
  184. Private Sub 月清單_DGV_RowPostPaint(ByVal sender As Object, ByVal e As DataGridViewRowPostPaintEventArgs) Handles 月清單_DGV.RowPostPaint
  185. For I As Integer = 0 To 月清單_DGV.Rows.Count - 1
  186. If Strings.Left(月清單_DGV.Rows(I).Cells("請假類別").Value.ToString, 3) = "補上班" Then : 月清單_DGV.Rows(I).DefaultCellStyle.BackColor = Color.White
  187. ElseIf 月清單_DGV.Rows(I).Cells("星期").Value.ToString = "星期日" Then : 月清單_DGV.Rows(I).DefaultCellStyle.BackColor = Color.LightPink
  188. ElseIf 月清單_DGV.Rows(I).Cells("星期").Value.ToString = "星期六" Then : 月清單_DGV.Rows(I).DefaultCellStyle.BackColor = Color.LightPink
  189. ElseIf 月清單_DGV.Rows(I).Cells("請假類別").Value.ToString = "國定假日" Then : 月清單_DGV.Rows(I).DefaultCellStyle.BackColor = Color.LightPink
  190. ElseIf 月清單_DGV.Rows(I).Cells("請假類別").Value.ToString <> "" Then : 月清單_DGV.Rows(I).DefaultCellStyle.BackColor = Color.LightYellow
  191. End If
  192. Next
  193. End Sub
  194. Private Sub 檔案名稱_tb_DragEnter(sender As Object, e As DragEventArgs) Handles 檔案名稱_tb.DragEnter
  195. If e.Data.GetDataPresent(DataFormats.FileDrop) Then
  196. Dim files As String()
  197. Try
  198. files = CType(e.Data.GetData(DataFormats.FileDrop), String())
  199. 檔案名稱_tb.Text = files(files.Length - 1)
  200. Catch ex As Exception
  201. MessageBox.Show(ex.Message)
  202. Return
  203. End Try
  204. End If
  205. Dim STR2 As Integer = 0
  206. 檔案路徑2_tb.Text = 檔案名稱_tb.Text
  207. 檔案路徑1_tb.Text = 檔案名稱_tb.Text
  208. If 檔案名稱_tb.Text = "" Then
  209. Else
  210. For i As Integer = 0 To 9999
  211. Dim STR1 As Integer = Strings.Len(檔案路徑1_tb.Text)
  212. If Strings.Right((檔案路徑1_tb.Text), 1) <> "\" Then
  213. STR1 -= 1 : STR2 += 1
  214. If STR1 = 0 Then
  215. 檔案路徑1_tb.Text = ""
  216. 檔案名稱_tb.Text = ""
  217. i = 9999
  218. Else
  219. 檔案路徑1_tb.Text = Strings.Left((檔案路徑1_tb.Text), STR1)
  220. End If
  221. Else
  222. 檔案路徑1_tb.Text = Strings.Right((檔案名稱_tb.Text), STR2)
  223. 檔案名稱_tb.Text = 檔案路徑1_tb.Text
  224. i = 9999
  225. End If
  226. Next
  227. End If
  228. End Sub
  229. Private Sub 檔案名稱_tb_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles 檔案名稱_tb.DragDrop
  230. Dim files As Array = e.Data.GetData(DataFormats.FileDrop)
  231. For Each file As String In files
  232. 檔案名稱_tb.AppendText(file + Environment.NewLine)
  233. Next
  234. End Sub
  235. Private Sub 讀取料夾路徑_bt_Click(sender As Object, e As EventArgs) Handles 讀取料夾路徑_bt.Click
  236. If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then : WebBrowser2.Navigate(FolderBrowserDialog1.SelectedPath)
  237. End If
  238. End Sub
  239. Private Sub CanceL2_bt_Click(sender As Object, e As EventArgs) Handles CanceL2_bt.Click
  240. If 視窗2_pl.Visible = False Then : 視窗2_pl.Visible = True : 視窗2_pl.BringToFront() : Else
  241. 視窗2_pl.Visible = False : End If
  242. End Sub
  243. Private Sub 圖片導入系統_bt_Click(sender As Object, e As EventArgs) Handles 圖片導入系統_bt.Click
  244. If 視窗2_pl.Visible = False Then
  245. 視窗2_pl.Location = New System.Drawing.Point((Me.Size.Width - 視窗2_pl.Size.Width) / 2, (Me.Size.Height - 視窗2_pl.Size.Height) / 2)
  246. 視窗2_pl.Visible = True : 視窗2_pl.BringToFront()
  247. Else : End If
  248. End Sub
  249. Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
  250. 圖片傳遞 = PictureBox1.Image : 圖片放大視窗.ShowDialog()
  251. End Sub
  252. '----------------------自創視窗滑鼠拖曳功能---------------------------------------------------------------------------------------------------------
  253. Dim OldX, OldY As Long : Dim drag As Boolean
  254. Private Sub 視窗2_pl_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 視窗2_pl.MouseDown
  255. If e.Button = MouseButtons.Left Then : OldX = e.X : OldY = e.Y : drag = True : End If
  256. End Sub
  257. Private Sub 視窗2_pl_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 視窗2_pl.MouseMove
  258. If drag Then : 視窗2_pl.Left = 視窗2_pl.Left + e.X - OldX : 視窗2_pl.Top = 視窗2_pl.Top + e.Y - OldY : End If
  259. End Sub
  260. Private Sub 視窗2_pl_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 視窗2_pl.MouseUp
  261. drag = False
  262. End Sub
  263. End Class