No Description
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 15KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. Imports System.IO
  2. Imports Microsoft.Office.Interop.Excel.XlUnderlineStyle
  3. Imports Microsoft.Office.Interop.Excel.Constants
  4. Imports Microsoft.Office.Interop.Excel.XlBordersIndex
  5. Imports Microsoft.Office.Interop.Excel.XlLineStyle
  6. Imports Microsoft.Office.Interop.Excel.XlBorderWeight
  7. Imports Microsoft.Office.Interop.Excel.XlThemeFont
  8. Imports Microsoft.Office.Interop.Excel.XlThemeColor
  9. Imports Microsoft.Office.Interop.Excel.XlWindowState
  10. Imports Microsoft.Office.Interop.Excel.XlPageOrientation
  11. Imports Microsoft.Office.Interop.Excel
  12. Public Class 休假歷史紀錄
  13. ReadOnly ds, ds1 As New DataSet : Dim 剛開啟 As Boolean : Dim 位置1 As Integer
  14. Dim xlApp As Application : Dim xlBook As Workbook : Dim xlSheet As Worksheet
  15. Private Sub 讀取人員資料表()
  16. 人員_dgv.DataSource = Nothing : ds.Clear()
  17. 人員_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  18. 人員_dgv.ColumnHeadersHeight = 25
  19. 人員_dgv.AllowUserToAddRows = False
  20. SQL_考勤明細表_人員()
  21. da.Fill(ds) : 人員_dgv.DataSource = ds.Tables(0) : conn.Close()
  22. 人員_dgv.Columns(0).FillWeight = 70 : 人員_dgv.Columns(1).FillWeight = 80 : 人員_dgv.Columns(2).FillWeight = 100 : 人員_dgv.Columns(3).Visible = False
  23. 人員_dgv.Columns(4).Visible = False : 人員_dgv.Columns(5).Visible = False : 人員_dgv.Columns(6).Visible = False : 人員_dgv.Columns(7).Visible = False
  24. 人員_dgv.Columns(8).Visible = False : 人員_dgv.Columns(9).Visible = False : 人員_dgv.Columns("到職日").Visible = False
  25. For i As Integer = 0 To 人員_dgv.Rows.Count - 1
  26. 人員_dgv.Rows(i).Cells("No.").Value = i + 1
  27. Next
  28. End Sub
  29. Private Sub 年份_下拉表單資料載入()
  30. SQL_考勤明細表_年份_下拉()
  31. 年份_cb.Items.Clear()
  32. While (dr.Read()) : 年份_cb.Items.Add(dr("年份")) : End While
  33. conn.Close()
  34. End Sub
  35. Private Sub Set_考勤明細()
  36. 月清單_DGV.DataSource = Nothing : ds1.Clear()
  37. 月清單_DGV.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  38. 月清單_DGV.ColumnHeadersHeight = 40
  39. 月清單_DGV.AllowUserToAddRows = False
  40. PA = 員工編號_tb.Text : SQL_休假清單() 'PA = 年份_cb.Text & "/" & 月份_cb.Text :
  41. da.Fill(ds1) : 月清單_DGV.DataSource = ds1.Tables(0) : conn.Close()
  42. 月清單_DGV.Columns(0).FillWeight = 80 : 月清單_DGV.Columns(1).FillWeight = 40 : 月清單_DGV.Columns(2).FillWeight = 90 : 月清單_DGV.Columns(3).FillWeight = 65
  43. 月清單_DGV.Columns(4).FillWeight = 55 : 月清單_DGV.Columns(5).FillWeight = 150 : 月清單_DGV.Columns(6).FillWeight = 60 : 月清單_DGV.Columns(7).FillWeight = 80
  44. 月清單_DGV.Columns(8).FillWeight = 80 : 月清單_DGV.Columns("圖片資料庫").Visible = False : 月清單_DGV.Columns("圖片編號").Visible = False
  45. 月清單_DGV.Columns("申請時數").FillWeight = 50
  46. If 月清單_DGV.Rows.Count > 0 Then
  47. 請假日期_tb.Text = 月清單_DGV("日期", 0).Value.ToString : Set_假期統計()
  48. Else
  49. 假期統計_dgv.DataSource = Nothing
  50. End If
  51. End Sub
  52. Private Sub Set_假期統計()
  53. Dim ds As New DataSet
  54. 假期統計_dgv.DataSource = Nothing : ds.Clear()
  55. 假期統計_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  56. 假期統計_dgv.ColumnHeadersHeight = 25
  57. 假期統計_dgv.AllowUserToAddRows = False
  58. PA = 員工編號_tb.Text : PA1 = 請假日期_tb.Text : SQL_休假統計()
  59. da.Fill(ds) : 假期統計_dgv.DataSource = ds.Tables(0) : conn.Close()
  60. End Sub
  61. Private Sub 歷史休假紀錄_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  62. 剛開啟 = True : 年份_下拉表單資料載入()
  63. 年份_cb.Text = Year(Today) : 月份_cb.SelectedIndex = Month(Today) - 1 : 請假類別_cb.SelectedIndex = 0
  64. PA1 = 年份_cb.Text : PA2 = 月份_cb.Text
  65. 讀取人員資料表() : Set_考勤明細() : 剛開啟 = False
  66. End Sub
  67. Private Sub 人員_dgv_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles 人員_dgv.CellClick
  68. If e.RowIndex = -1 Then : Else
  69. 員工編號_tb.Text = 人員_dgv("編號", e.RowIndex).Value.ToString : 申請人_tb.Text = 人員_dgv("姓名", e.RowIndex).Value.ToString
  70. Set_考勤明細() : 請假日期_tb.Text = 年份_cb.Text & "/" & 月份_cb.Text : Set_假期統計()
  71. End If
  72. End Sub
  73. Private Sub 月清單_DGV_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles 月清單_DGV.CellClick
  74. If e.RowIndex = -1 Then : Else
  75. If 月清單_DGV.Rows(e.RowIndex).Cells("星期").Value.ToString = "星期六" Or 月清單_DGV.Rows(e.RowIndex).Cells("星期").Value.ToString = "星期日" Or
  76. 月清單_DGV.Rows(e.RowIndex).Cells("請假類別").Value.ToString = "國定假日" Then
  77. MsgBox("星期六/星期日或國定假日不可以申請特休!!")
  78. 請假日期_tb.Text = ""
  79. 事由_tb.Text = ""
  80. Else
  81. 員工編號_tb.Text = 月清單_DGV("編號", e.RowIndex).Value.ToString : 申請人_tb.Text = 月清單_DGV("姓名", e.RowIndex).Value.ToString
  82. 請假日期_tb.Text = 月清單_DGV("日期", e.RowIndex).Value.ToString : 事由_tb.Text = 月清單_DGV("事由", e.RowIndex).Value.ToString
  83. 請假類別_cb.Text = 月清單_DGV("請假類別", e.RowIndex).Value.ToString
  84. 資料指定圖庫_tb.Text = 月清單_DGV("圖片資料庫", e.RowIndex).Value.ToString : 圖片流水號_tb.Text = 月清單_DGV("圖片編號", e.RowIndex).Value.ToString
  85. '------------驗貨報告讀取--------------------------------------------------------------------------------------------
  86. If 資料指定圖庫_tb.Text <> "" And 圖片流水號_tb.Text <> "" Then
  87. 圖片庫 = 資料指定圖庫_tb.Text : SQL_連線字串_圖片資料庫() : PA2 = 圖片流水號_tb.Text
  88. SQL_請假圖() : PictureBox2.Image = Nothing
  89. While dr.Read() = True
  90. Dim unused As Byte() = New Byte(-1) {} : Dim bytes As Byte() = DirectCast(dr.Item("圖片"), Byte())
  91. Dim oStream As New MemoryStream(bytes) : PictureBox2.Image = Bitmap.FromStream(oStream)
  92. End While : conn.Close() : PictureBox2.SizeMode = 4
  93. Else
  94. PictureBox2.Image = Nothing
  95. End If
  96. End If
  97. End If
  98. End Sub
  99. Private Sub 月清單_DGV_RowPostPaint(ByVal sender As Object, ByVal e As DataGridViewRowPostPaintEventArgs) Handles 月清單_DGV.RowPostPaint
  100. Dim linePen As New Pen(Color.Blue, 2)
  101. If e.RowIndex = 月清單_DGV.Rows.Count - 1 Then : Exit Sub : Else
  102. If Strings.Left(月清單_DGV("姓名", e.RowIndex).Value.ToString, 7) <> Strings.Left(月清單_DGV("姓名", e.RowIndex + 1).Value.ToString, 7) Then
  103. Dim startX As Integer = IIf(月清單_DGV.RowHeadersVisible, 月清單_DGV.RowHeadersWidth, 0) : Dim startY As Integer = e.RowBounds.Top + e.RowBounds.Height - 1
  104. Dim endX As Integer = startX + 月清單_DGV.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - 月清單_DGV.HorizontalScrollingOffset
  105. e.Graphics.DrawLine(linePen, startX, startY, endX, startY) : Exit Sub
  106. End If
  107. End If
  108. End Sub
  109. Private Sub 月份_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 月份_cb.SelectedIndexChanged
  110. If 剛開啟 = False Then : Set_考勤明細() : End If
  111. End Sub
  112. Private Sub 年份_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 年份_cb.SelectedIndexChanged
  113. If 剛開啟 = False Then : Set_考勤明細() : End If
  114. End Sub
  115. Private Sub 列印_bt_Click(sender As Object, e As EventArgs) Handles 列印_bt.Click
  116. xlApp = CType(CreateObject("Excel.Application"), Application)
  117. xlBook = xlApp.Workbooks.Add
  118. xlApp.DisplayAlerts = True
  119. xlApp.Visible = True
  120. xlApp.Application.WindowState = xlMaximized
  121. xlSheet = NewMethod(xlBook) : xlApp.Sheets(1).Select
  122. xlApp.Sheets(1).Name = "請休假申請資料" : xlBook.Activate() : xlSheet.Activate()
  123. xlSheet.Cells(1, 1) = "黃柏翰皮膚科診所請休假資料" : xlSheet.Cells(2, 1) = CInt(年份_cb.Text) - 1911 & "年" & 月份_cb.Text & "月 - 全月"
  124. xlSheet.Cells(3, 1) = "項" : xlSheet.Cells(3, 2) = "姓名" : xlSheet.Cells(3, 3) = "日期" : xlSheet.Cells(3, 4) = "星期"
  125. xlSheet.Cells(3, 5) = "假別" : xlSheet.Cells(3, 6) = "事由" : xlSheet.Cells(3, 7) = "時數"
  126. For i As Integer = 0 To 月清單_DGV.Rows.Count - 1
  127. xlSheet.Cells(4 + i, 1) = i + 1 : xlSheet.Cells(4 + i, 2) = 月清單_DGV("姓名", i).Value.ToString
  128. xlSheet.Cells(4 + i, 3) = 月清單_DGV("日期", i).Value.ToString : xlSheet.Cells(4 + i, 4) = 月清單_DGV("星期", i).Value.ToString
  129. xlSheet.Cells(4 + i, 5) = 月清單_DGV("請假類別", i).Value.ToString : xlSheet.Cells(4 + i, 6) = 月清單_DGV("事由", i).Value.ToString
  130. xlSheet.Cells(4 + i, 7) = 月清單_DGV("申請時數", i).Value.ToString
  131. Next : 位置1 = 4 + 月清單_DGV.Rows.Count - 1 : AA(xlApp, xlSheet)
  132. xlSheet.PageSetup.PrintArea = "" : xlApp.Cells.Select() : xlSheet.Range("B1").Select() : xlApp.Application.WindowState = xlMinimized : MsgBox("列印完成")
  133. End Sub
  134. Private Shared Function NewMethod(xlBook As Workbook) As Worksheet
  135. Return CType(xlBook.Worksheets.Add, Worksheet)
  136. End Function
  137. Private Sub AA(ByVal myExcel As Microsoft.Office.Interop.Excel.Application, ByVal xlSheet As Microsoft.Office.Interop.Excel.Worksheet)
  138. xlSheet.Cells.Select()
  139. With myExcel.Selection.Font : .Name = "微軟正黑體" : .Size = 12 : .Strikethrough = False : .Superscript = False : .Subscript = False : .OutlineFont = False
  140. .Shadow = False : .Underline = xlUnderlineStyleNone : .ThemeColor = xlThemeColorLight1 : .TintAndShade = 0 : .ThemeFont = xlThemeFontNone : End With
  141. xlSheet.Columns("A:A").Select : myExcel.Selection.ColumnWidth = 4
  142. xlSheet.Columns("A:G").Select
  143. With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
  144. .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With
  145. xlSheet.Range("F4:F" & 位置1).Select()
  146. With myExcel.Selection : .HorizontalAlignment = xlLeft : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
  147. .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With
  148. xlSheet.Columns("B:G").Select : myExcel.Columns("B:F").EntireColumn.AutoFit
  149. xlSheet.Rows("4:4").Select : myExcel.ActiveWindow.FreezePanes = True
  150. xlSheet.Range("B3:G3").Select() : myExcel.Selection.AutoFilter
  151. xlSheet.Rows("3:3").Select : myExcel.Selection.RowHeight = 35
  152. With myExcel.Selection : .VerticalAlignment = xlTop : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0 : .ShrinkToFit = False
  153. .ReadingOrder = xlContext : .MergeCells = False : End With
  154. xlSheet.Range("A3:G" & 位置1).Select()
  155. myExcel.Selection.Borders(xlDiagonalDown).LineStyle = xlNone : myExcel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  156. With myExcel.Selection.Borders(xlEdgeLeft) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  157. With myExcel.Selection.Borders(xlEdgeTop) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  158. With myExcel.Selection.Borders(xlEdgeBottom) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  159. With myExcel.Selection.Borders(xlEdgeRight) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  160. With myExcel.Selection.Borders(xlInsideVertical) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  161. With myExcel.Selection.Borders(xlInsideHorizontal) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  162. myExcel.Selection.Borders(xlDiagonalDown).LineStyle = xlNone : myExcel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  163. With myExcel.Selection.Borders(xlEdgeLeft) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With
  164. With myExcel.Selection.Borders(xlEdgeTop) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With
  165. With myExcel.Selection.Borders(xlEdgeBottom) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With
  166. With myExcel.Selection.Borders(xlEdgeRight) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With
  167. With myExcel.Selection.Borders(xlInsideVertical) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  168. xlSheet.Range("A2:G2").Select()
  169. With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
  170. .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With : myExcel.Selection.Merge
  171. With myExcel.Selection.Font : .Name = "微軟正黑體" : .Size = 12 : .Strikethrough = False : .Superscript = False : .Subscript = False : .OutlineFont = False
  172. .Shadow = False : .Underline = xlUnderlineStyleNone : .ThemeColor = xlThemeColorLight1 : .TintAndShade = 0 : .ThemeFont = xlThemeFontNone : End With
  173. myExcel.Selection.Font.Bold = True
  174. xlSheet.Range("A1:G1").Select()
  175. With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
  176. .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With : myExcel.Selection.Merge
  177. With myExcel.Selection.Font : .Name = "微軟正黑體" : .Size = 16 : .Strikethrough = False : .Superscript = False : .Subscript = False : .OutlineFont = False
  178. .Shadow = False : .Underline = xlUnderlineStyleNone : .ThemeColor = xlThemeColorLight1 : .TintAndShade = 0 : .ThemeFont = xlThemeFontNone : End With
  179. myExcel.Selection.Font.Bold = True
  180. xlSheet.Range("A3:G3").Select()
  181. With myExcel.Selection.Interior : .Pattern = xlSolid : .PatternColorIndex = xlAutomatic : .ThemeColor = xlThemeColorAccent1 : .TintAndShade = 0.799981688894314
  182. .PatternTintAndShade = 0 : End With
  183. xlSheet.Range("F4").Select()
  184. myExcel.ActiveWindow.DisplayGridlines = False
  185. End Sub
  186. End Class