暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

物料資料庫.vb 33KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487
  1. Option Strict Off
  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
  11. Imports System.IO
  12. Imports System.Net
  13. Public Class 物料資料庫
  14. ReadOnly ds1 As New DataSet : ReadOnly ds2 As New DataSet
  15. Dim 資料新增判斷 As Boolean : Dim EDR, N1 As Integer : Dim ESTR As String : Dim 首次開啟 As Boolean = False : Dim str As String
  16. Dim xlApp As Application : Dim xlBook As Workbook : Dim xlSheet As Worksheet
  17. Private Sub Set_清單()
  18. 物料清單_dgv.DataSource = Nothing : ds1.Clear() : 物料清單_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  19. 物料清單_dgv.ColumnHeadersHeight = 40
  20. 物料清單_dgv.AllowUserToAddRows = False
  21. 物料清單_dgv.RowTemplate.Height = 30
  22. SQL_物料檔案_清單()
  23. da.Fill(ds1) : 物料清單_dgv.DataSource = ds1.Tables(0) : conn.Close()
  24. 物料清單_dgv.Columns("料號").FillWeight = 45 : 物料清單_dgv.Columns("廠商").FillWeight = 60 : 物料清單_dgv.Columns("成本").FillWeight = 30
  25. 物料清單_dgv.Columns("品名").FillWeight = 120 : 物料清單_dgv.Columns("停用").FillWeight = 20 : 物料清單_dgv.Columns("圖片").Visible = False
  26. 物料清單_dgv.Columns("最低庫存量").Visible = False : 物料清單_dgv.Columns("供應商").Visible = False : 物料清單_dgv.Columns("刪除").FillWeight = 20
  27. 物料清單_dgv.Columns("廠牌").FillWeight = 25 : 物料清單_dgv.Columns("車種年份").FillWeight = 80 : 物料清單_dgv.Columns("單位").FillWeight = 20
  28. 物料清單_dgv.Columns("倉庫").FillWeight = 15 : 物料清單_dgv.Columns("狀態").FillWeight = 25
  29. 物料清單_dgv.Columns("成本").DefaultCellStyle.Format = "#,##0.##"
  30. 物料清單_dgv.Columns("成本").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
  31. 物料清單_dgv.Columns("成本").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
  32. 物料清單_dgv.Columns("料號").ReadOnly = True : 物料清單_dgv.Columns("供應商").ReadOnly = True : 物料清單_dgv.Columns("成本").ReadOnly = True
  33. 物料清單_dgv.Columns("圖片").ReadOnly = True : 物料清單_dgv.Columns("品名").ReadOnly = True : 物料清單_dgv.Columns("廠牌").ReadOnly = True
  34. 物料清單_dgv.Columns("車種年份").ReadOnly = True : 物料清單_dgv.Columns("單位").ReadOnly = True
  35. 物料清單_dgv.Columns("倉庫").ReadOnly = True : 物料清單_dgv.Columns("廠商").ReadOnly = True : 物料清單_dgv.Columns("狀態").ReadOnly = True
  36. 資料筆數_tb.Text = 物料清單_dgv.Rows.Count
  37. For i As Integer = 0 To 物料清單_dgv.Rows.Count - 1
  38. 物料清單_dgv("刪除", i).Value = False
  39. Next
  40. End Sub
  41. Private Sub 單位_cb_下拉表單資料載入()
  42. SQL_物料資料庫單位_下拉清單() : 單位_cb.Items.Clear()
  43. 單位_cb.Items.Add("")
  44. While (dr.Read()) : 單位_cb.Items.Add(dr("單位")) : End While : conn.Close()
  45. End Sub
  46. Private Sub 物料檔案_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  47. Me.MdiParent = ICS_ASMS_ERP_SYS : Me.WindowState = 2 : Me.AutoScroll = True
  48. Dim type0 As Type = 物料清單_dgv.GetType()
  49. Dim pi0 As Reflection.PropertyInfo = type0.GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance Or System.Reflection.BindingFlags.NonPublic)
  50. pi0.SetValue(物料清單_dgv, True, Nothing)
  51. 地區編碼_cb.Enabled = False : 下載檔名_tb.Visible = False : 檔名讀取_tb.Visible = False : 供應商編碼_tb.Visible = False '--------------------控件隱藏、操作許可設定與其他基本顯示設定
  52. 料號_tb.Enabled = False : 批量存檔_bt.Enabled = False : 批輛停用選擇_ch.Enabled = False : 批量刪除選擇_ch.Enabled = False : 批量刪除_bt.Enabled = False : 狀態_lb.Text = "預覽狀態"
  53. If Val(登入人級別) <= 2 Then '--------------------刪除資料權限
  54. 刪除_tsm.Enabled = True : 刪除_bt.Enabled = True : 批量刪除_bt.Enabled = False
  55. Else
  56. 刪除_tsm.Enabled = False : 刪除_bt.Enabled = False : 批量刪除_bt.Enabled = False
  57. End If
  58. 首次開啟 = False : Set_清單() : 首次開啟 = True '--------------------資料讀取
  59. If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then : 本機資料夾_wb.Navigate(FolderBrowserDialog1.SelectedPath) : End If '--------------------讀取本機資料夾位置
  60. Target1 = Target & AA(1) & "/"
  61. If ICS_ASMS_ERP_SYS.Size.Width > 1440 And ICS_ASMS_ERP_SYS.Size.Height > 900 Then
  62. 字體_NUD.Value = 12
  63. ElseIf ICS_ASMS_ERP_SYS.Size.Width <= 1440 And ICS_ASMS_ERP_SYS.Size.Height <= 900 Then
  64. 字體_NUD.Value = 7.6
  65. End If
  66. 單位_cb_下拉表單資料載入()
  67. SQL_物料資料庫_類別_下拉清單() : 地區_cb.Items.Clear()
  68. While (dr.Read()) : 地區_cb.Items.Add(dr("類別")) : End While : conn.Close()
  69. End Sub
  70. Private Sub 物料檔案_SizeChanged(sender As Object, e As EventArgs) Handles MyBase.SizeChanged
  71. If ICS_ASMS_ERP_SYS.Size.Width > 1440 And ICS_ASMS_ERP_SYS.Size.Height > 900 Then
  72. 字體_NUD.Value = 12
  73. ElseIf ICS_ASMS_ERP_SYS.Size.Width <= 1440 And ICS_ASMS_ERP_SYS.Size.Height <= 900 Then
  74. 字體_NUD.Value = 8
  75. End If
  76. End Sub
  77. Private Sub 供應商資料表_Closed(sender As Object, e As EventArgs) Handles MyBase.Closed
  78. If 資料新增判斷 = True Then '--------------------如果再關閉介面時,資料新增判斷是開啟的,就無條件刪除控件上的那筆資料
  79. PA20 = 料號_tb.Text : SQL_物料檔案_刪除() '--------------------資料刪除
  80. End If
  81. End Sub
  82. Private Sub 物料清單_dgv_CellClick(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles 物料清單_dgv.CellClick
  83. If 首次開啟 = True Then
  84. If e.RowIndex = -1 Then : Else
  85. 料號_tb.Text = 物料清單_dgv("料號", e.RowIndex).Value.ToString : 供應商編碼_tb.Text = 物料清單_dgv("供應商", e.RowIndex).Value.ToString
  86. 成本_nud.Value = 物料清單_dgv("成本", e.RowIndex).Value : 品名_tb.Text = 物料清單_dgv("品名", e.RowIndex).Value.ToString
  87. 停用_ch.Checked = 物料清單_dgv("停用", e.RowIndex).Value : 低量_nud.Value = 物料清單_dgv("最低庫存量", e.RowIndex).Value
  88. 車種年份_tb.Text = 物料清單_dgv("車種年份", e.RowIndex).Value.ToString : 廠牌_tb.Text = 物料清單_dgv("廠牌", e.RowIndex).Value.ToString
  89. 單位_cb.Text = 物料清單_dgv("單位", e.RowIndex).Value.ToString : 倉庫_tb.Text = 物料清單_dgv("倉庫", e.RowIndex).Value.ToString
  90. 物料圖_pb.Image = Nothing : PA1 = 料號_tb.Text : SQL_物料檔案_是否有圖() : 狀態_cb.Text = 物料清單_dgv("狀態", e.RowIndex).Value.ToString
  91. If dr.Read() Then
  92. If dr("是否有圖") = True Then
  93. 物料圖_pb.BackgroundImage = Nothing
  94. PA = 料號_tb.Text : SQL_物料圖庫_圖片顯示() '--------------------圖片顯示
  95. While dr.Read() = True
  96. Dim unused As Byte() = New Byte(-1) {}
  97. Dim bytes As Byte() = DirectCast(dr.Item("圖片"), Byte())
  98. Dim oStream As New MemoryStream(bytes)
  99. 物料圖_pb.Image = Bitmap.FromStream(oStream)
  100. End While
  101. conn.Close()
  102. 物料圖_pb.SizeMode = 4
  103. Else
  104. '物料圖_pb.BackgroundImage = My.Resources.底圖1 : 物料圖_pb.BackgroundImageLayout = 3
  105. 物料圖_pb.Image = Nothing
  106. End If
  107. End If : conn.Close()
  108. If 批輛停用選擇_ch.Checked = True Then '--------------------批輛停用選擇功能
  109. If 物料清單_dgv("停用", e.RowIndex).Value = False Then
  110. 物料清單_dgv("停用", e.RowIndex).Value = True
  111. ElseIf 物料清單_dgv("停用", e.RowIndex).Value = True Then
  112. 物料清單_dgv("停用", e.RowIndex).Value = False
  113. End If
  114. End If
  115. If 批量刪除選擇_ch.Checked = True Then '--------------------批輛停用選擇功能
  116. If 物料清單_dgv("刪除", e.RowIndex).Value = False Then
  117. 物料清單_dgv("刪除", e.RowIndex).Value = True
  118. ElseIf 物料清單_dgv("刪除", e.RowIndex).Value = True Then
  119. 物料清單_dgv("刪除", e.RowIndex).Value = False
  120. End If
  121. End If
  122. End If
  123. End If
  124. End Sub
  125. Private Sub 物料清單_dgv_RowPostPaint(ByVal sender As Object, ByVal e As DataGridViewRowPostPaintEventArgs) Handles 物料清單_dgv.RowPostPaint
  126. Dim linePen As New Pen(Color.Blue, 2)
  127. If e.RowIndex = 物料清單_dgv.Rows.Count - 1 Then : Exit Sub : Else
  128. If 物料清單_dgv("供應商", e.RowIndex).Value.ToString <> 物料清單_dgv("供應商", e.RowIndex + 1).Value.ToString Then
  129. Dim startX As Integer = IIf(物料清單_dgv.RowHeadersVisible, 物料清單_dgv.RowHeadersWidth, 0) : Dim startY As Integer = e.RowBounds.Top + e.RowBounds.Height - 1
  130. Dim endX As Integer = startX + 物料清單_dgv.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - 物料清單_dgv.HorizontalScrollingOffset
  131. e.Graphics.DrawLine(linePen, startX, startY, endX, startY) : Exit Sub
  132. End If
  133. For i As Integer = 0 To 物料清單_dgv.Rows.Count - 1
  134. If 物料清單_dgv("圖片", i).Value = True And 物料清單_dgv("停用", i).Value = False Then : 物料清單_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightGoldenrodYellow : End If
  135. If 物料清單_dgv("圖片", i).Value = False And 物料清單_dgv("停用", i).Value = False Then : 物料清單_dgv.Rows(i).DefaultCellStyle.BackColor = Color.White : End If
  136. If 物料清單_dgv("停用", i).Value = True Then : 物料清單_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightPink : End If
  137. If 物料清單_dgv("刪除", i).Value = True Then : 物料清單_dgv.Rows(i).DefaultCellStyle.ForeColor = Color.Red : End If
  138. If 物料清單_dgv("刪除", i).Value = False Then : 物料清單_dgv.Rows(i).DefaultCellStyle.ForeColor = Color.Black : End If
  139. Next
  140. End If
  141. End Sub
  142. Private Sub 地區_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 地區_cb.SelectedIndexChanged
  143. If 查詢_tb.Text = "" Then
  144. 供應商編碼_cb.Items.Clear() : 供應商_cb.Items.Clear() : 供應商_下拉表單資料載入()
  145. 'ElseIf 地區_cb.Text = "" Then
  146. ' 查詢_tb.Text = "" : 供應商_cb.Items.Clear() : 供應商編碼_cb.Items.Clear()
  147. ' ElseIf 地區_cb.Text <> "" Then
  148. '查詢_tb.Text = "" :
  149. End If
  150. End Sub
  151. Private Sub 供應商_下拉表單資料載入()
  152. BL1 = False : PA3 = 地區_cb.Text : PA4 = 供應商編碼_cb.Text
  153. SQL_物料資料庫_供應商_下拉清單()
  154. While (dr.Read()) : 供應商編碼_cb.Items.Add(dr("供應商編碼")) : 供應商_cb.Items.Add(dr("公司名")) : End While : conn.Close()
  155. End Sub
  156. Private Sub 供應商_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 供應商_cb.SelectedIndexChanged
  157. If 地區_cb.Text <> "" Then
  158. 查詢_tb.Text = "" : 供應商編碼_cb.SelectedIndex = 供應商_cb.SelectedIndex
  159. Set_清單()
  160. End If
  161. End Sub
  162. Private Sub 供應商編碼_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 供應商編碼_cb.SelectedIndexChanged
  163. If 地區_cb.Text <> "" Then
  164. 查詢_tb.Text = "" : 供應商_cb.SelectedIndex = 供應商編碼_cb.SelectedIndex
  165. Set_清單()
  166. End If
  167. End Sub
  168. Private Sub 清空_bt_Click(sender As Object, e As EventArgs) Handles 清空_bt.Click
  169. 查詢_tb.Text = "" : Set_清單()
  170. End Sub
  171. Private Sub 查詢_tb_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles 查詢_tb.KeyPress
  172. If e.KeyChar = Chr(13) Then
  173. '供應商_cb.Items.Clear() : 供應商編碼_cb.Items.Clear()
  174. PA = 查詢_tb.Text : Set_清單() ': 地區_cb.Text = ""
  175. End If
  176. End Sub
  177. Private Sub 檔案名稱_tb_DragEnter(sender As Object, e As DragEventArgs) Handles 檔案名稱_tb.DragEnter
  178. If e.Data.GetDataPresent(DataFormats.FileDrop) Then
  179. Dim files As String()
  180. files = CType(e.Data.GetData(DataFormats.FileDrop), String())
  181. 檔案名稱_tb.Text = files(files.Length - 1)
  182. End If
  183. Dim STR2 As Integer = 0
  184. str = 檔案名稱_tb.Text
  185. 檔名讀取_tb.Text = 檔案名稱_tb.Text
  186. If 檔案名稱_tb.Text = "" Then
  187. Else
  188. For i As Integer = 0 To 9999
  189. Dim STR1 As Integer = Strings.Len(檔名讀取_tb.Text)
  190. If Strings.Right((檔名讀取_tb.Text), 1) <> "\" Then
  191. STR1 -= 1 : STR2 += 1
  192. If STR1 = 0 Then
  193. 檔名讀取_tb.Text = ""
  194. 檔案名稱_tb.Text = ""
  195. i = 9999
  196. Else
  197. 檔名讀取_tb.Text = Strings.Left((檔名讀取_tb.Text), STR1)
  198. End If
  199. Else
  200. 檔名讀取_tb.Text = Strings.Right((檔案名稱_tb.Text), STR2)
  201. 檔案名稱_tb.Text = 檔名讀取_tb.Text
  202. i = 9999
  203. End If
  204. Next
  205. End If
  206. End Sub
  207. Private Sub 檔案名稱_tb_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles 檔案名稱_tb.DragDrop
  208. Dim files As Array = e.Data.GetData(DataFormats.FileDrop)
  209. For Each file As String In files
  210. 檔案名稱_tb.AppendText(file + Environment.NewLine)
  211. Next
  212. End Sub
  213. Private Sub 讀取資料夾路徑_bt_Click(sender As Object, e As EventArgs) Handles 讀取資料夾路徑_bt.Click
  214. If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then : 本機資料夾_wb.Navigate(FolderBrowserDialog1.SelectedPath) : End If
  215. End Sub
  216. Private Sub 圖檔入系統_bt_Click(sender As Object, e As EventArgs) Handles 圖檔入系統_bt.Click
  217. If 料號_tb.Text = "" Then : MsgBox("請先選擇未指定圖片的物料料號") : Else
  218. Dim 驗證 As String = "" : Dim 取變數 As String : 取變數 = Strings.StrReverse(檔案名稱_tb.Text)
  219. For i As Integer = 1 To 10
  220. If i = 1 Then : 驗證 = Strings.Left(取變數, i) : Else
  221. If Strings.Mid(取變數, i, 1) = "." Then : 驗證 = Strings.StrReverse(驗證) : Exit For : Else : 驗證 &= Strings.Mid(取變數, i, 1) : End If
  222. End If
  223. Next
  224. If 驗證 = "PNG" Or 驗證 = "png" Or 驗證 = "GIF" Or 驗證 = "gif" Or 驗證 = "BMP" Or 驗證 = "bmp" Or 驗證 = "JPG" Or 驗證 = "jpg" Or 驗證 = "JPEG" Or 驗證 = "jpeg" Then
  225. PA49 = str : PA = 料號_tb.Text : SQL_物料資料庫_圖檔入系統() : conn.Close() : MsgBox("上傳完畢")
  226. 物料圖_pb.Image = Nothing : PA = 料號_tb.Text : SQL_物料圖庫_圖片顯示()
  227. While dr.Read() = True
  228. Dim unused As Byte() = New Byte(-1) {}
  229. Dim bytes As Byte() = DirectCast(dr.Item("圖片"), Byte())
  230. Dim oStream As New MemoryStream(bytes)
  231. 物料圖_pb.Image = Bitmap.FromStream(oStream)
  232. End While
  233. conn.Close()
  234. 物料圖_pb.SizeMode = 4
  235. Else : MsgBox("上傳文件並非常用圖片格式, 文件已自動刪除, 請專換成常用圖片檔案再行操作。") : End If : 檔案名稱_tb.Text = ""
  236. Set_清單()
  237. End If
  238. End Sub
  239. Private Sub 下載圖檔_bt_Click(sender As Object, e As EventArgs) Handles 下載圖檔_bt.Click
  240. If 物料圖_pb.Image Is Nothing Then : MsgBox("所選擇的資料沒有圖片檔案,無法下載。") : Else
  241. With SaveFileDialog1 : .Filter = "所有文件(*.jpg)|*.jpg" : End With
  242. SaveFileDialog1.FileName = 料號_tb.Text & "-" & Strings.Format(Today(), "yyyyMMdd") & ".jpg"
  243. Dim result As DialogResult = SaveFileDialog1.ShowDialog()
  244. 下載檔名_tb.Text = SaveFileDialog1.FileName
  245. If result = System.Windows.Forms.DialogResult.Cancel Then
  246. Exit Sub
  247. End If
  248. conn.Close() : ds2.Clear() : SQL_物料圖庫_圖片下載() : da.Fill(ds2)
  249. If ds2.Tables(0).Rows.Count > 0 Then
  250. Dim imgData() As Byte
  251. imgData = ds2.Tables(0).Rows(0).Item("圖片")
  252. Dim fs As FileStream
  253. fs = File.Create(下載檔名_tb.Text, imgData.Length - 1)
  254. fs.Write(imgData, 0, imgData.Length - 1)
  255. fs.Close()
  256. End If : conn.Close() : MsgBox("下載完成")
  257. End If
  258. End Sub
  259. Private Sub 新增準備_bt_Click(sender As Object, e As EventArgs) Handles 新增準備_bt.Click
  260. If 供應商編碼_cb.Text = "" Then '--------------------設定條件讓業務控件不為空
  261. MsgBox("沒有選擇供應商")
  262. Else
  263. 料號_tb.Text = "" : 供應商編碼_tb.Text = "" : 成本_nud.Value = 0 : 品名_tb.Text = "" : 停用_ch.Checked = False '--------------------控件清空
  264. 查詢_tb.Text = "" : 車種年份_tb.Text = "" : 廠牌_tb.Text = "" : 單位_cb.Text = "" : 倉庫_tb.Text = ""
  265. 資料新增判斷 = True '--------------------目前的編輯狀態
  266. 狀態_lb.Text = "編輯狀態"
  267. 物料清單_dgv.Enabled = False : 查詢_tb.Enabled = False '--------------------關閉DGV與關鍵字查詢控件的點選控制功能
  268. SQL_物料資料庫_料號_最後一筆()
  269. If dr.Read() Then : 料號_tb.Text = dr("料號").ToString : Else : 料號_tb.Text = "MT00000000" : End If : conn.Close()
  270. Dim NUM1 As Integer = Double.Parse(Strings.Right(料號_tb.Text, 8)) + 1
  271. If NUM1 < 10 Then : 料號_tb.Text = "MT" & "0000000" & NUM1
  272. ElseIf NUM1 > 9 And NUM1 < 100 Then : 料號_tb.Text = "MT" & "000000" & NUM1
  273. ElseIf NUM1 > 99 And NUM1 < 1000 Then : 料號_tb.Text = "MT" & "00000" & NUM1
  274. ElseIf NUM1 > 999 And NUM1 < 10000 Then : 料號_tb.Text = "MT" & "0000" & NUM1
  275. ElseIf NUM1 > 9999 And NUM1 < 10000 Then : 料號_tb.Text = "MT" & "000" & NUM1
  276. ElseIf NUM1 > 99999 And NUM1 < 10000 Then : 料號_tb.Text = "MT" & "00" & NUM1
  277. ElseIf NUM1 > 999999 And NUM1 < 10000 Then : 料號_tb.Text = "MT" & "0" & NUM1
  278. ElseIf NUM1 > 9999999 Then : 料號_tb.Text = "MT" & NUM1
  279. End If
  280. SQL_物料檔案_新增() '--------------------人事資料表中寫入一筆資料
  281. End If
  282. End Sub
  283. Private Sub 存檔_bt_Click(sender As Object, e As EventArgs) Handles 存檔_bt.Click
  284. If 品名_tb.Text = "" Then '--------------------設定條件讓地區編碼_cb控件不為空
  285. MsgBox("物品一定要有名稱。")
  286. Else
  287. If 狀態_cb.Text = "" Then '--------------------設定條件讓地區編碼_cb控件不為空
  288. MsgBox("未選擇狀態。")
  289. Else
  290. 資料新增判斷 = False '--------------------目前的編輯狀態
  291. 狀態_lb.Text = "預覽狀態"
  292. 物料清單_dgv.Enabled = True : 查詢_tb.Enabled = True '--------------------開啟DGV與關鍵字查詢控件的點選控制功能
  293. NU1 = 成本_nud.Value : PA1 = 品名_tb.Text : BL1 = 停用_ch.Checked : PA2 = 料號_tb.Text : NU2 = 低量_nud.Value
  294. SQL_物料檔案_修改() '--------------------資料修改
  295. Set_清單() '--------------------資料修改後重新讀取清單
  296. End If
  297. End If
  298. End Sub
  299. Private Sub 刪除_bt_Click(sender As Object, e As EventArgs) Handles 刪除_bt.Click
  300. If 料號_tb.Text = "" Then '--------------------設定條件讓流水號控件不為空
  301. MsgBox("沒有選擇要刪除的資料")
  302. Else
  303. Dim aa1 As MsgBoxResult = MsgBox("確定要執行刪除指令嗎?", MsgBoxStyle.OkCancel)
  304. If aa1 = MsgBoxResult.Ok Then
  305. PA20 = 料號_tb.Text : SQL_物料檔案_刪除() '--------------------資料刪除
  306. Set_清單() '--------------------資料修改後重新讀取清單
  307. End If
  308. End If
  309. End Sub
  310. Private Sub 啟用批改_ch_CheckedChanged(sender As Object, e As EventArgs) Handles 啟用批改_ch.Click
  311. If 啟用批改_ch.Checked = True Then
  312. 批量存檔_bt.Enabled = True : 新增準備_bt.Enabled = False : 存檔_bt.Enabled = False : 刪除_bt.Enabled = False
  313. 批輛停用選擇_ch.Enabled = True : 啟用批改_ch.Checked = True : 重新整理_tsm.Enabled = False
  314. 新增準備_tsm.Enabled = False : 存檔_tsm.Enabled = False : 刪除_tsm.Enabled = False : 批量刪除選擇_ch.Enabled = True : 批量刪除_bt.Enabled = True
  315. 物料清單_dgv.EditMode = DataGridViewEditMode.EditOnEnter : 狀態_lb.Text = "批改狀態" '--------------------控件隱藏、操作許可設定與其他基本顯示設定
  316. MsgBox("已啟用批改模式。")
  317. ElseIf 啟用批改_ch.Checked = False Then
  318. 批量存檔_bt.Enabled = False : 新增準備_bt.Enabled = True : 存檔_bt.Enabled = True : 刪除_bt.Enabled = True
  319. 批輛停用選擇_ch.Enabled = False : 批輛停用選擇_ch.Checked = False : 啟用批改_ch.Checked = False : 批量刪除選擇_ch.Checked = False : 重新整理_tsm.Enabled = True
  320. 新增準備_tsm.Enabled = True : 存檔_tsm.Enabled = True : 刪除_tsm.Enabled = True : 批量刪除選擇_ch.Enabled = False : 批量刪除_bt.Enabled = False
  321. 物料清單_dgv.EditMode = DataGridViewEditMode.EditOnF2 : 狀態_lb.Text = "預覽狀態" '--------------------控件隱藏、操作許可設定與其他基本顯示設定
  322. End If
  323. End Sub
  324. Private Sub 批量存檔_bt_Click(sender As Object, e As EventArgs) Handles 批量存檔_bt.Click
  325. 批量存檔_bt.Enabled = False : 新增準備_bt.Enabled = True : 存檔_bt.Enabled = True : 刪除_bt.Enabled = True
  326. 批輛停用選擇_ch.Enabled = False : 批輛停用選擇_ch.Checked = False : 啟用批改_ch.Checked = False : 重新整理_tsm.Enabled = True
  327. 新增準備_tsm.Enabled = True : 存檔_tsm.Enabled = True : 刪除_tsm.Enabled = True : 批量刪除選擇_ch.Enabled = False : 批量刪除_bt.Enabled = False
  328. 物料清單_dgv.EditMode = DataGridViewEditMode.EditOnF2 : 狀態_lb.Text = "預覽狀態" '--------------------控件隱藏、操作許可設定與其他基本顯示設定
  329. For i As Integer = 0 To 物料清單_dgv.Rows.Count - 1
  330. 資料數 = 物料清單_dgv.Rows.Count : MyModule1.進度條()
  331. NU1 = 物料清單_dgv("成本", i).Value : PA1 = 物料清單_dgv("品名", i).Value
  332. BL1 = 物料清單_dgv("停用", i).Value : PA2 = 物料清單_dgv("料號", i).Value
  333. NU2 = 物料清單_dgv("最低庫存量", i).Value
  334. SQL_物料檔案_修改() '--------------------資料修改
  335. Next : conn.Close() : ICS_ASMS_ERP_SYS.ToolStripProgressBar1.Value = 0 : 最終數 = 0 : MsgBox("存檔完成。")
  336. End Sub
  337. Private Sub 批量刪除_bt_Click(sender As Object, e As EventArgs) Handles 批量刪除_bt.Click
  338. If 批量刪除選擇_ch.Checked = False Then
  339. MsgBox("批量刪除選擇的功能要先打勾,並正確選擇要刪除的料號。")
  340. Else
  341. Dim aa1 As MsgBoxResult = MsgBox("確定要執行刪除指令嗎?", MsgBoxStyle.OkCancel)
  342. If aa1 = MsgBoxResult.Ok Then
  343. 批量存檔_bt.Enabled = False : 新增準備_bt.Enabled = True : 存檔_bt.Enabled = True : 刪除_bt.Enabled = True
  344. 批輛停用選擇_ch.Enabled = False : 批輛停用選擇_ch.Checked = False : 啟用批改_ch.Checked = False : 重新整理_tsm.Enabled = True
  345. 新增準備_tsm.Enabled = True : 存檔_tsm.Enabled = True : 刪除_tsm.Enabled = True : 批量刪除選擇_ch.Enabled = False : 批量刪除_bt.Enabled = False
  346. 物料清單_dgv.EditMode = DataGridViewEditMode.EditOnF2 : 狀態_lb.Text = "預覽狀態" '--------------------控件隱藏、操作許可設定與其他基本顯示設定
  347. For i As Integer = 0 To 物料清單_dgv.Rows.Count - 1
  348. 資料數 = 物料清單_dgv.Rows.Count : MyModule1.進度條()
  349. If 物料清單_dgv("刪除", i).Value = True Then
  350. PA20 = 物料清單_dgv("料號", i).Value : SQL_物料檔案_刪除() '--------------------資料刪除
  351. End If
  352. Next : conn.Close() : ICS_ASMS_ERP_SYS.ToolStripProgressBar1.Value = 0 : 最終數 = 0
  353. MsgBox("刪除完成。") : Set_清單() '--------------------資料修改後重新讀取清單
  354. End If
  355. End If
  356. End Sub
  357. Private Sub 列印_bt_Click(sender As Object, e As EventArgs) Handles 列印_bt.Click
  358. xlApp = CType(CreateObject("Excel.Application"), Application)
  359. xlBook = xlApp.Workbooks.Add
  360. xlApp.DisplayAlerts = True
  361. xlBook.Activate()
  362. xlSheet = NewMethod(xlBook)
  363. xlSheet.Activate()
  364. xlApp.Visible = True
  365. xlApp.Application.WindowState = xlMaximized
  366. xlSheet.Cells(1, 3) = "XXXXX-物料清單"
  367. xlSheet.Cells(2, 1) = "料號" : xlSheet.Cells(2, 2) = "廠商編號" : xlSheet.Cells(2, 3) = "廠商"
  368. xlSheet.Cells(2, 4) = "品名" : xlSheet.Cells(2, 5) = "盤點數量" : xlSheet.Cells(2, 6) = "備註"
  369. For i As Integer = 0 To 物料清單_dgv.Rows.Count - 1
  370. xlSheet.Cells(i + 3, 1) = 物料清單_dgv.Rows(i).Cells("料號").Value
  371. xlSheet.Cells(i + 3, 2) = 物料清單_dgv.Rows(i).Cells("供應商").Value
  372. xlSheet.Cells(i + 3, 3) = 物料清單_dgv.Rows(i).Cells("廠商").Value
  373. xlSheet.Cells(i + 3, 4) = 物料清單_dgv.Rows(i).Cells("品名").Value
  374. N1 = i + 3
  375. Next
  376. BB(xlApp, xlSheet)
  377. xlSheet.PageSetup.PrintArea = ""
  378. xlApp.Cells.Select()
  379. xlSheet.Range("B1").Select()
  380. xlApp.Application.WindowState = xlMinimized
  381. xlSheet.Cells.Select()
  382. MsgBox("列印完成。")
  383. End Sub
  384. Private Shared Function NewMethod(xlBook As Workbook) As Worksheet
  385. Return CType(xlBook.Worksheets.Add, Worksheet)
  386. End Function
  387. Private Sub BB(ByVal myExcel As Application, ByVal xlSheet As Worksheet)
  388. xlSheet.Cells.Select()
  389. With myExcel.Selection.Font : .Name = "微軟正黑體" : .Size = 10 : .Strikethrough = False : .Superscript = False : .Subscript = False : .OutlineFont = False : .Shadow = False
  390. .Underline = xlUnderlineStyleNone : .ThemeColor = xlThemeColorLight1 : .TintAndShade = 0 : .ThemeFont = xlThemeFontNone
  391. End With
  392. '
  393. xlSheet.Cells.Select()
  394. With myExcel.Selection.Font
  395. .Name = "微軟正黑體" : .Size = 12 : .Strikethrough = False : .Superscript = False : .Subscript = False : .OutlineFont = False : .Shadow = False
  396. .Underline = xlUnderlineStyleNone : .ThemeColor = xlThemeColorLight1 : .TintAndShade = 0 : .ThemeFont = xlThemeFontNone
  397. End With
  398. xlSheet.Columns("A:F").EntireColumn.AutoFit
  399. xlSheet.Columns("F:F").Select : myExcel.Selection.ColumnWidth = 20
  400. xlSheet.Cells.Select() : myExcel.Selection.RowHeight = 25
  401. xlSheet.Rows("2:2").Select : myExcel.Selection.AutoFilter
  402. xlSheet.Rows("3:3").Select : myExcel.ActiveWindow.FreezePanes = True
  403. xlSheet.Range("A1:F1").Select()
  404. With myExcel.Selection
  405. .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0 : .ShrinkToFit = False
  406. .ReadingOrder = xlContext : .MergeCells = False
  407. End With
  408. myExcel.Selection.Merge
  409. xlSheet.Range("A1:F" & N1).Select()
  410. myExcel.Selection.Borders(xlDiagonalDown).LineStyle = xlNone : myExcel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  411. With myExcel.Selection.Borders(xlEdgeLeft) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  412. With myExcel.Selection.Borders(xlEdgeTop) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  413. With myExcel.Selection.Borders(xlEdgeBottom) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  414. With myExcel.Selection.Borders(xlEdgeRight) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  415. With myExcel.Selection.Borders(xlInsideVertical) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  416. With myExcel.Selection.Borders(xlInsideHorizontal) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  417. End Sub
  418. '-------------------滑鼠右鍵-------------------------------------------------------------------------------------------------------------------------------------------------------------------
  419. Private Sub 重新整理_tsm_Click(sender As Object, e As EventArgs) Handles 重新整理_tsm.Click
  420. 供應商_cb.Items.Clear() : 供應商編碼_cb.Items.Clear() : 查詢_tb.Text = "" : Set_清單()
  421. End Sub
  422. Private Sub 新增準備_tsm_Click(sender As Object, e As EventArgs) Handles 新增準備_tsm.Click
  423. 新增準備_bt.PerformClick()
  424. End Sub
  425. Private Sub 存檔_tsm_Click(sender As Object, e As EventArgs) Handles 存檔_tsm.Click
  426. 存檔_bt.PerformClick()
  427. End Sub
  428. Private Sub 字體_NUD_ValueChanged(sender As Object, e As EventArgs) Handles 字體_NUD.ValueChanged
  429. 物料清單_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 字體_NUD.Value)
  430. End Sub
  431. Private Sub 刪除_tsm_Click(sender As Object, e As EventArgs) Handles 刪除_tsm.Click
  432. 刪除_bt.PerformClick()
  433. End Sub
  434. Private Sub 新增準備_bt_MouseEnter(sender As Object, e As EventArgs) Handles 新增準備_bt.MouseEnter
  435. ToolTip1.SetToolTip(Me.新增準備_bt, "新增準備")
  436. End Sub
  437. Private Sub 存檔_bt_MouseEnter(sender As Object, e As EventArgs) Handles 存檔_bt.MouseEnter
  438. ToolTip1.SetToolTip(Me.存檔_bt, "存檔")
  439. End Sub
  440. Private Sub 刪除_bt_MouseEnter(sender As Object, e As EventArgs) Handles 刪除_bt.MouseEnter
  441. ToolTip1.SetToolTip(Me.刪除_bt, "刪除")
  442. End Sub
  443. Private Sub 批量存檔_bt_MouseEnter(sender As Object, e As EventArgs) Handles 批量存檔_bt.MouseEnter
  444. ToolTip1.SetToolTip(Me.批量存檔_bt, "新增準備")
  445. End Sub
  446. Private Sub 批量刪除_bt_MouseEnter(sender As Object, e As EventArgs) Handles 批量刪除_bt.MouseEnter
  447. ToolTip1.SetToolTip(Me.批量刪除_bt, "新增準備")
  448. End Sub
  449. Private Sub 列印_bt_MouseEnter(sender As Object, e As EventArgs) Handles 列印_bt.MouseEnter
  450. ToolTip1.SetToolTip(Me.列印_bt, "新增準備")
  451. End Sub
  452. Private Sub 新讀取資料夾路徑_bt_MouseEnter(sender As Object, e As EventArgs) Handles 讀取資料夾路徑_bt.MouseEnter
  453. ToolTip1.SetToolTip(Me.讀取資料夾路徑_bt, "讀取資料夾路徑")
  454. End Sub
  455. Private Sub 圖檔入系統_bt_MouseEnter(sender As Object, e As EventArgs) Handles 圖檔入系統_bt.MouseEnter
  456. ToolTip1.SetToolTip(Me.圖檔入系統_bt, "圖檔入系統或修改")
  457. End Sub
  458. Private Sub 下載圖檔_bt_MouseEnter(sender As Object, e As EventArgs) Handles 下載圖檔_bt.MouseEnter
  459. ToolTip1.SetToolTip(Me.下載圖檔_bt, "下載圖檔")
  460. End Sub
  461. End Class