Brak opisu
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.

零組件-零件BOM表.vb 38KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634
  1. Option Strict Off
  2. Imports System.Data.SqlClient
  3. Imports Microsoft.Office.Interop.Excel.XlUnderlineStyle
  4. Imports Microsoft.Office.Interop.Excel.Constants
  5. Imports Microsoft.Office.Interop.Excel.XlBordersIndex
  6. Imports Microsoft.Office.Interop.Excel.XlLineStyle
  7. Imports Microsoft.Office.Interop.Excel.XlBorderWeight
  8. Imports Microsoft.Office.Interop.Excel.XlThemeFont
  9. Imports Microsoft.Office.Interop.Excel.XlThemeColor
  10. Imports Microsoft.Office.Interop.Excel.XlWindowState
  11. Public Class 零組件零件BOM表
  12. Private ReadOnly ds As DataSet = New DataSet
  13. Private ReadOnly ds1 As DataSet = New DataSet
  14. Private ReadOnly ds2 As DataSet = New DataSet
  15. Private ReadOnly ds3 As DataSet = New DataSet
  16. Private ReadOnly ds4 As DataSet = New DataSet
  17. Private ReadOnly ds5 As DataSet = New DataSet
  18. Dim 條件 As String
  19. Dim KE As Integer
  20. Private Sub 機構科目清單()
  21. DataGridView4.DataSource = Nothing : ds3.Clear()
  22. DataGridView4.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  23. DataGridView4.ColumnHeadersHeight = 25
  24. DataGridView4.AllowUserToAddRows = False
  25. ConnOpen()
  26. SQL1 = "SELECT 品牌, 供應商, 科目, 類型 FROM 零組件成本紀錄表 WHERE (科目 LIKE N'%" & ComboBox3.Text & "%') GROUP BY 品牌, 供應商, 科目, 類型 ORDER BY 類型"
  27. CmdSet_For_DGV() : da.Fill(ds3) : DataGridView4.DataSource = ds3.Tables(0) : conn.Close()
  28. If ComboBox3.Text <> "-請選擇-" Then : Set_grid4() : End If
  29. End Sub
  30. Private Sub 機構名稱清單()
  31. DataGridView5.DataSource = Nothing : ds4.Clear()
  32. DataGridView5.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  33. DataGridView5.ColumnHeadersHeight = 25
  34. DataGridView5.AllowUserToAddRows = False
  35. ConnOpen()
  36. SQL1 = "SELECT 流水碼, 供應商, 品名 FROM 零組件成本紀錄表 WHERE (類型 LIKE N'%" & ComboBox4.Text & "%') ORDER BY 流水碼"
  37. CmdSet_For_DGV() : da.Fill(ds4) : DataGridView5.DataSource = ds4.Tables(0) : conn.Close()
  38. Set_grid5()
  39. End Sub
  40. Private Sub 零組件清單()
  41. DataGridView6.DataSource = Nothing : ds5.Clear()
  42. DataGridView6.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  43. DataGridView6.ColumnHeadersHeight = 25
  44. DataGridView6.AllowUserToAddRows = False
  45. ConnOpen()
  46. If 條件 = "" Then
  47. SQL1 = "SELECT 零組件零件BOM表.機構碼, 零組件成本紀錄表.科目, 零組件成本紀錄表.類型, 零組件成本紀錄表.品名 FROM 零組件零件BOM表 INNER JOIN 零組件成本紀錄表" &
  48. " ON 零組件零件BOM表.機構碼 = 零組件成本紀錄表.流水碼 GROUP BY 零組件零件BOM表.機構碼, 零組件成本紀錄表.科目, 零組件成本紀錄表.類型, " &
  49. "零組件成本紀錄表.品名 ORDER BY 零組件成本紀錄表.科目"
  50. Else
  51. SQL1 = "SELECT 零組件零件BOM表.機構碼, 零組件成本紀錄表.科目, 零組件成本紀錄表.類型, 零組件成本紀錄表.品名 FROM 零組件零件BOM表 INNER JOIN 零組件成本紀錄表 ON " &
  52. "零組件零件BOM表.機構碼 = 零組件成本紀錄表.流水碼 WHERE (零組件成本紀錄表.流水碼 LIKE N'%" & 條件 & "%') OR (零組件成本紀錄表.品牌 LIKE N'%" & 條件 & "%') " &
  53. "OR (零組件成本紀錄表.供應商 LIKE N'%" & 條件 & "%') OR (零組件成本紀錄表.科目 LIKE N'%" & 條件 & "%') OR (零組件成本紀錄表.類型 LIKE N'%" & 條件 & "%') OR " &
  54. "(零組件成本紀錄表.品名 LIKE N'%" & 條件 & "%') GROUP BY 零組件零件BOM表.機構碼, 零組件成本紀錄表.科目, 零組件成本紀錄表.類型, 零組件成本紀錄表.品名 ORDER BY " &
  55. "零組件成本紀錄表.科目"
  56. End If
  57. CmdSet_For_DGV() : da.Fill(ds5) : DataGridView6.DataSource = ds5.Tables(0) : conn.Close()
  58. Set_grid6() : 條件 = ""
  59. End Sub
  60. Private Sub DGV2寫入前設定()
  61. DataGridView2.DataSource = Nothing : ds.Clear()
  62. DataGridView2.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  63. DataGridView2.ColumnHeadersHeight = 25
  64. DataGridView2.AllowUserToAddRows = False
  65. ConnOpen()
  66. End Sub
  67. Private Sub DGV2寫入後設定()
  68. CmdSet_For_DGV() : da.Fill(ds) : DataGridView2.DataSource = ds.Tables(0) : conn.Close()
  69. Set_grid1()
  70. End Sub
  71. Private Sub 讀取零件清單()
  72. If PA = "" Then
  73. DGV2寫入前設定()
  74. SQL1 = "SELECT 流水碼, 品牌, 供應商, 科目, 品名, 型號及備註, 進貨單價, 幣別 FROM 零件成本紀錄表 ORDER BY 科目"
  75. Else
  76. DGV2寫入前設定()
  77. SQL1 = "SELECT 流水碼, 品牌, 供應商, 科目, 品名, 型號及備註, 進貨單價, 幣別 FROM 零件成本紀錄表 WHERE 品牌 like N'%" & PA &
  78. "%' OR 供應商 like N'%" & PA & "%' OR 科目 like N'%" & PA & "%' OR 品名 like N'%" & PA & "%' OR 型號及備註 like N'%" & PA & "%' OR 幣別 like N'%" & PA & "%' ORDER BY 科目"
  79. End If
  80. DGV2寫入後設定()
  81. End Sub
  82. Private Sub 讀取零組件零件BOM表()
  83. DataGridView1.DataSource = Nothing : ds1.Clear()
  84. DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  85. DataGridView1.ColumnHeadersHeight = 25
  86. DataGridView1.AllowUserToAddRows = False
  87. ConnOpen()
  88. SQL1 = "SELECT 零組件零件BOM表.機構碼, 零組件零件BOM表.零件流水碼, 零件成本紀錄表.科目, 零件成本紀錄表.品名, 零組件零件BOM表.數量, 零件成本紀錄表.型號及備註," &
  89. "ROUND(Convert(float, 零組件零件BOM表.數量) * Convert(float, 零件成本紀錄表.進貨單價),2) AS 成本, 零件成本紀錄表.幣別, 零件成本紀錄表.品牌 FROM 零組件零件BOM表 INNER JOIN 零件成本紀錄表 " &
  90. "ON 零組件零件BOM表.零件流水碼 = 零件成本紀錄表.流水碼 WHERE 零組件零件BOM表.機構碼 = '" & ComboBox1.Text & "' ORDER BY 零件成本紀錄表.科目"
  91. CmdSet_For_DGV() : da.Fill(ds1) : DataGridView1.DataSource = ds1.Tables(0) : conn.Close() : dr.Close()
  92. DataGridView3.DataSource = Nothing : ds2.Clear()
  93. DataGridView3.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  94. DataGridView3.ColumnHeadersHeight = 25
  95. DataGridView3.AllowUserToAddRows = False
  96. ConnOpen()
  97. SQL1 = "SELECT 零件成本紀錄表_1.科目, ROUND(SUM(CONVERT(float, 零組件零件BOM表_1.數量) * CONVERT(float, 零件成本紀錄表_1.進貨單價)), 2) AS 成本, " &
  98. "ROUND(SUM(CONVERT(float, 零組件零件BOM表_1.數量) * CONVERT(float, 零件成本紀錄表_1.進貨單價)) / (SELECT SUM(CONVERT(float, 零組件零件BOM表.數量) * " &
  99. "CONVERT(float, 零件成本紀錄表.進貨單價)) AS 成本 FROM 零組件零件BOM表 INNER JOIN 零件成本紀錄表 ON 零組件零件BOM表.零件流水碼 = 零件成本紀錄表.流水碼 " &
  100. "WHERE (零組件零件BOM表.機構碼 = '" & ComboBox1.Text & "')), 4) * 100 AS 百分比 FROM 零組件零件BOM表 AS 零組件零件BOM表_1 INNER JOIN 零件成本紀錄表 AS " &
  101. "零件成本紀錄表_1 ON 零組件零件BOM表_1.零件流水碼 = 零件成本紀錄表_1.流水碼 WHERE (零組件零件BOM表_1.機構碼 = '" & ComboBox1.Text & "') GROUP BY " &
  102. "零件成本紀錄表_1.科目 ORDER BY 零件成本紀錄表_1.科目"
  103. CmdSet_For_DGV() : da.Fill(ds2) : DataGridView3.DataSource = ds2.Tables(0) : conn.Close() : dr.Close()
  104. ConnOpen()
  105. SQL1 = "SELECT ROUND(SUM(CONVERT(float, 零組件零件BOM表.數量) * CONVERT(float, 零件成本紀錄表.進貨單價)), 2) AS 成本 FROM 零組件零件BOM表 INNER JOIN 零件成本紀錄表 ON " &
  106. "零組件零件BOM表.零件流水碼 = 零件成本紀錄表.流水碼 WHERE 零組件零件BOM表.機構碼 = '" & ComboBox1.Text & "'"
  107. CmdSet_For_dr()
  108. If dr.Read() Then
  109. TextBox6.Text = dr("成本").ToString
  110. If InStr(TextBox6.Text, ".") = 0 Then
  111. If Len(TextBox6.Text) <= 3 Then
  112. TextBox9.Text = TextBox6.Text & ".00"
  113. ElseIf Len(TextBox6.Text) <= 4 Then
  114. TextBox9.Text = Strings.Left(TextBox6.Text, 1) & "," & Mid(TextBox6.Text, 2, 10) & ".00"
  115. ElseIf Len(TextBox6.Text) <= 5 Then
  116. TextBox9.Text = Strings.Left(TextBox6.Text, 2) & "," & Mid(TextBox6.Text, 3, 10) & ".00"
  117. ElseIf Len(TextBox6.Text) <= 6 Then
  118. TextBox9.Text = Strings.Left(TextBox6.Text, 3) & "," & Mid(TextBox6.Text, 4, 10) & ".00"
  119. ElseIf Len(TextBox6.Text) <= 7 Then
  120. TextBox9.Text = Strings.Left(TextBox6.Text, 1) & "," & Mid(TextBox6.Text, 2, 3) & "," & Mid(TextBox6.Text, 5, 10) & ".00"
  121. End If
  122. Else
  123. If InStr(TextBox6.Text, ".") <= 4 Then
  124. TextBox9.Text = TextBox6.Text
  125. ElseIf InStr(TextBox6.Text, ".") = 5 Then
  126. TextBox9.Text = Strings.Left(TextBox6.Text, 1) & "," & Mid(TextBox6.Text, 2, 10)
  127. ElseIf InStr(TextBox6.Text, ".") = 6 Then
  128. TextBox9.Text = Strings.Left(TextBox6.Text, 2) & "," & Mid(TextBox6.Text, 3, 10)
  129. ElseIf InStr(TextBox6.Text, ".") = 7 Then
  130. TextBox9.Text = Strings.Left(TextBox6.Text, 3) & "," & Mid(TextBox6.Text, 4, 10)
  131. ElseIf InStr(TextBox6.Text, ".") = 8 Then
  132. TextBox9.Text = Strings.Left(TextBox6.Text, 1) & "," & Mid(TextBox6.Text, 2, 3) & "," & Mid(TextBox6.Text, 5, 10)
  133. End If
  134. End If
  135. End If
  136. conn.Close() : dr.Close()
  137. Set_grid2()
  138. If TextBox6.Text = "" Then
  139. TextBox9.Text = ""
  140. End If
  141. End Sub
  142. Private Sub ComboBox4下拉表單資料載入()
  143. conn.Close()
  144. If ComboBox3.Text = "" Or ComboBox3.Text = "-請選擇-" Then
  145. ComboBox3.Text = "-請選擇-"
  146. ConnOpen()
  147. SQL1 = "SELECT 類型 FROM 機構成本科目類型表 ORDER BY 類型"
  148. Else
  149. ConnOpen()
  150. SQL1 = "SELECT 類型 FROM 機構成本科目類型表 WHERE (科目 ='" & ComboBox3.Text & "') ORDER BY 類型"
  151. End If
  152. cmd.CommandText = SQL1 : cmd.Connection = conn : dr = cmd.ExecuteReader
  153. ComboBox4.Items.Clear()
  154. While (dr.Read())
  155. ComboBox4.Items.Add(dr("類型"))
  156. End While
  157. conn.Close()
  158. End Sub
  159. Private Sub ComboBox1下拉表單資料載入()
  160. conn.Close()
  161. If ComboBox4.Text = "" Or ComboBox4.Text = "-請選擇-" Or ComboBox3.Text = "" Or ComboBox3.Text = "-請選擇-" Then
  162. ComboBox4.Text = "-請選擇-"
  163. ConnOpen()
  164. SQL1 = "SELECT 流水碼 FROM 零組件成本紀錄表 ORDER BY 流水碼 DESC"
  165. Else
  166. ConnOpen()
  167. SQL1 = "SELECT 流水碼 FROM 零組件成本紀錄表 WHERE 科目 like N'%" & ComboBox3.Text & "%' AND 類型 like N'%" & ComboBox4.Text & "%' ORDER BY 流水碼 DESC"
  168. End If
  169. cmd.CommandText = SQL1 : cmd.Connection = conn : dr = cmd.ExecuteReader
  170. ComboBox1.Items.Clear()
  171. While (dr.Read())
  172. ComboBox1.Items.Add(dr("流水碼"))
  173. End While
  174. conn.Close()
  175. End Sub
  176. Private Sub 格式設定()
  177. TextBox1.Text = "" : TextBox2.Text = "" : TextBox4.Text = ""
  178. ComboBox1.Enabled = True : Button3.Enabled = True : Button7.Enabled = False : Button2.Enabled = False : Button4.Enabled = False : Button5.Enabled = False
  179. Button8.Enabled = True : Button9.Enabled = False : Button10.Enabled = True : Button11.Enabled = False
  180. Button12.Enabled = False : Button13.Enabled = False
  181. End Sub
  182. Private Sub Set_grid1()
  183. DataGridView2.Columns(0).Visible = False : DataGridView2.Columns(1).Width = 55 : DataGridView2.Columns(2).Width = 80
  184. DataGridView2.Columns(3).Width = 110 : DataGridView2.Columns(4).Width = 230 : DataGridView2.Columns(5).Width = 120
  185. DataGridView2.Columns(6).Visible = False : DataGridView2.Columns(7).Visible = False
  186. End Sub
  187. Private Sub Set_grid2()
  188. DataGridView1.Columns(0).Visible = False : DataGridView1.Columns(1).Width = 80 : DataGridView1.Columns(2).Width = 80
  189. DataGridView1.Columns(3).Width = 250 : DataGridView1.Columns(4).Width = 70 : DataGridView1.Columns(5).Width = 120
  190. DataGridView1.Columns(6).Width = 60 : DataGridView1.Columns(7).Width = 50 : DataGridView1.Columns(8).Visible = False
  191. End Sub
  192. Private Sub Set_grid4()
  193. DataGridView4.Columns(0).Width = 60 : DataGridView4.Columns(1).Width = 60 : DataGridView4.Columns(2).Width = 70
  194. DataGridView4.Columns(3).Width = 115
  195. End Sub
  196. Private Sub Set_grid5()
  197. DataGridView5.Columns(0).Width = 80 : DataGridView5.Columns(1).Width = 60 : DataGridView5.Columns(2).Width = 170
  198. End Sub
  199. Private Sub Set_grid6()
  200. DataGridView6.Columns(0).Width = 65 : DataGridView6.Columns(1).Width = 70 : DataGridView6.Columns(2).Width = 70
  201. DataGridView6.Columns(3).Width = 100
  202. End Sub
  203. Private Sub DataGridView2_CellClick(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles DataGridView2.CellClick
  204. If e.RowIndex = -1 Then : Else
  205. TextBox1.Text = DataGridView2(0, e.RowIndex).Value.ToString : TextBox4.Text = DataGridView2(4, e.RowIndex).Value.ToString
  206. End If
  207. End Sub
  208. Private Sub DataGridView1_CellClick(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
  209. If e.RowIndex = -1 Then : Else
  210. TextBox1.Text = DataGridView1(1, e.RowIndex).Value.ToString : TextBox4.Text = DataGridView1(3, e.RowIndex).Value.ToString
  211. End If
  212. End Sub
  213. Private Sub DataGridView4_CellClick(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles DataGridView4.CellClick
  214. If e.RowIndex = -1 Then : Else
  215. ComboBox4.Text = DataGridView4(3, e.RowIndex).Value.ToString
  216. End If
  217. End Sub
  218. Private Sub DataGridView5_CellClick(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles DataGridView5.CellClick
  219. If e.RowIndex = -1 Then : Else
  220. ComboBox1.Text = DataGridView5(0, e.RowIndex).Value.ToString
  221. End If
  222. End Sub
  223. Private Sub DataGridView6_CellClick(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles DataGridView6.CellClick
  224. If e.RowIndex = -1 Then : Else
  225. ComboBox3.Text = DataGridView6(1, e.RowIndex).Value.ToString : ComboBox4.Text = DataGridView6(2, e.RowIndex).Value.ToString
  226. End If
  227. End Sub
  228. Private Sub 零組件零件BOM表_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  229. Me.MdiParent = GCM_ERP_SYS
  230. Me.WindowState = 2
  231. ComboBox3.Items.AddRange(科目清單)
  232. 讀取零件清單() : ComboBox4下拉表單資料載入() : ComboBox1下拉表單資料載入() : 格式設定() : 零組件清單()
  233. ComboBox1.SelectedIndex = 0
  234. End Sub
  235. Private Sub 登入閒置控制_MouseMove(sender As Object, e As EventArgs) Handles MyBase.MouseMove
  236. timeNow = 0
  237. GCM_ERP_SYS.Timer1.Enabled = False
  238. GCM_ERP_SYS.Timer1.Enabled = True
  239. End Sub
  240. Private Sub 登入閒置控制_KeyPress(sender As Object, e As EventArgs) Handles MyBase.KeyPress
  241. timeNow = 0
  242. GCM_ERP_SYS.Timer1.Enabled = False
  243. GCM_ERP_SYS.Timer1.Enabled = True
  244. End Sub
  245. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  246. PA = InputBox("請輸入要查詢零件的資料")
  247. If PA = "" Then Exit Sub
  248. 讀取零件清單()
  249. End Sub
  250. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  251. If TextBox1.Text = "" Then
  252. MsgBox("請選擇零件")
  253. Else
  254. ConnOpen()
  255. SQL1 = "SELECT 零件流水碼 FROM 零組件零件BOM表 WHERE 機構碼 = '" & ComboBox1.Text & "' AND 零件流水碼 = '" & TextBox1.Text & "'"
  256. CmdSet_For_dr()
  257. If dr.Read() Then : TextBox3.Text = dr("零件流水碼").ToString : End If
  258. conn.Close() : dr.Close()
  259. If TextBox3.Text = "" Then
  260. Dim a As String = InputBox("請輸入數量")
  261. ConnOpen()
  262. SQL1 = "INSERT INTO 零組件零件BOM表 (機構碼, 零件流水碼, 數量) VALUES ('" & ComboBox1.Text & "','" & TextBox1.Text & "','" & a & "')"
  263. cmd.Connection = conn : cmd.CommandText = SQL1 : cmd.ExecuteNonQuery()
  264. conn.Close()
  265. Else
  266. MsgBox("零件已有選擇,如需增加請修改數量")
  267. End If
  268. End If
  269. TextBox1.Text = "" : TextBox3.Text = "" : TextBox4.Text = ""
  270. 讀取零組件零件BOM表()
  271. End Sub
  272. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
  273. If TextBox1.Text = "" Then
  274. MsgBox("請選擇零件")
  275. Else
  276. ConnOpen()
  277. SQL1 = "SELECT 零件流水碼 FROM 零組件零件BOM表 WHERE 機構碼 = '" & ComboBox1.Text & "' AND 零件流水碼 = '" & TextBox1.Text & "'"
  278. CmdSet_For_dr()
  279. If dr.Read() Then : TextBox3.Text = dr("零件流水碼").ToString : End If
  280. conn.Close() : dr.Close()
  281. If TextBox3.Text <> "" Then
  282. Dim a As String = InputBox("請輸入修改數量")
  283. ConnOpen()
  284. SQL1 = "UPDATE 零組件零件BOM表 SET 機構碼 = '" & ComboBox1.Text & "', 數量 = '" & a & "' WHERE (零件流水碼 = '" & TextBox1.Text & "') and (機構碼 = '" & ComboBox1.Text & "')"
  285. cmd.Connection = conn : cmd.CommandText = SQL1 : cmd.ExecuteNonQuery() : conn.Close()
  286. Else
  287. MsgBox("請正確選擇")
  288. End If
  289. End If
  290. TextBox1.Text = "" : TextBox3.Text = "" : TextBox4.Text = ""
  291. 讀取零組件零件BOM表()
  292. End Sub
  293. Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
  294. If TextBox1.Text = "" Then
  295. MsgBox("請選擇零件")
  296. Else
  297. SQL1 = "DELETE FROM 零組件零件BOM表 WHERE (零件流水碼 = '" & TextBox1.Text & "') and (機構碼 = '" & ComboBox1.Text & "')"
  298. cmd.CommandText = SQL1 : cmd.Connection = conn
  299. ConnOpen()
  300. cmd.ExecuteNonQuery() : MsgBox("刪除完成")
  301. conn.Close()
  302. End If
  303. TextBox1.Text = "" : TextBox3.Text = "" : TextBox4.Text = ""
  304. 讀取零組件零件BOM表()
  305. End Sub
  306. Private Sub ComboBox3_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox3.SelectedIndexChanged
  307. ComboBox4下拉表單資料載入() : 機構科目清單()
  308. End Sub
  309. Private Sub ComboBox4_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox4.SelectedIndexChanged
  310. ComboBox1下拉表單資料載入() : 機構名稱清單()
  311. End Sub
  312. Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
  313. conn.Close() : dr.Close()
  314. ConnOpen()
  315. SQL1 = "SELECT 品名, 型號及備註, 幣別 FROM 零組件成本紀錄表 WHERE 流水碼 = '" & ComboBox1.Text & "'"
  316. CmdSet_For_dr()
  317. If dr.Read() Then
  318. TextBox2.Text = dr("品名").ToString : TextBox5.Text = dr("型號及備註").ToString : ComboBox2.Text = dr("幣別").ToString
  319. End If
  320. conn.Close() : dr.Close()
  321. ConnOpen()
  322. SQL1 = "SELECT 科目 FROM 零組件成本紀錄表 WHERE 流水碼 = '" & ComboBox1.Text & "'"
  323. CmdSet_For_dr()
  324. If dr.Read() Then
  325. ComboBox3.Text = dr("科目").ToString
  326. End If
  327. conn.Close() : dr.Close()
  328. ConnOpen()
  329. SQL1 = "SELECT 類型 FROM 零組件成本紀錄表 WHERE 流水碼 = '" & ComboBox1.Text & "'"
  330. CmdSet_For_dr()
  331. If dr.Read() Then
  332. ComboBox4.Text = dr("類型").ToString
  333. End If
  334. conn.Close() : dr.Close()
  335. 讀取零組件零件BOM表()
  336. End Sub
  337. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
  338. If ComboBox3.Text = "-請選擇-" Or ComboBox4.Text = "-請選擇-" Then
  339. MsgBox("科目或類型欄位不可空白")
  340. Else
  341. Dim NUM1 As Integer
  342. For NUM1 = 0 To 99999
  343. If NUM1 < 10 Then
  344. TextBox1.Text = "MS" & "0000" & NUM1
  345. ElseIf NUM1 > 9 And NUM1 < 100 Then
  346. TextBox1.Text = "MS" & "000" & NUM1
  347. ElseIf NUM1 > 99 And NUM1 < 1000 Then
  348. TextBox1.Text = "MS" & "00" & NUM1
  349. ElseIf NUM1 > 999 And NUM1 < 10000 Then
  350. TextBox1.Text = "MS" & "0" & NUM1
  351. ElseIf NUM1 > 9999 Then
  352. TextBox1.Text = "MS" & NUM1
  353. End If
  354. ConnOpen()
  355. SQL1 = "SELECT 流水碼 FROM 零組件成本紀錄表 WHERE (流水碼 ='" & TextBox1.Text & "')"
  356. CmdSet_For_dr()
  357. If dr.Read() Then
  358. ComboBox1.Text = dr("流水碼").ToString
  359. Else
  360. ComboBox1.Text = ""
  361. End If
  362. conn.Close()
  363. If ComboBox1.Text = "" Then
  364. ComboBox1.Text = TextBox1.Text : TextBox1.Text = "可用"
  365. TextBox1.Text = "" : TextBox2.Text = "" : TextBox5.Text = "" : ComboBox2.Text = ""
  366. ComboBox1.Enabled = False : Button3.Enabled = False : Button7.Enabled = True : Button12.Enabled = True
  367. NUM1 = 99999
  368. End If
  369. Next
  370. Button2.Enabled = True : Button4.Enabled = True : Button5.Enabled = True
  371. 讀取零組件零件BOM表()
  372. End If
  373. End Sub
  374. Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
  375. If ComboBox1.Enabled = True Or ComboBox3.Text = "-請選擇-" Or ComboBox4.Text = "-請選擇-" Or TextBox2.Text = "" Or TextBox6.Text = "" Or ComboBox2.Text = "" Then
  376. MsgBox("資料不足請檢查後重新確認")
  377. Else
  378. ConnOpen()
  379. SQL1 = "INSERT INTO 零組件成本紀錄表 (流水碼, 品牌, 供應商, 科目, 類型, 型號及備註, 品名, 供應商成本, 進貨單價, 幣別) VALUES ('" & ComboBox1.Text &
  380. "','工巧明','工巧明','" & ComboBox3.Text & "','" & ComboBox4.Text & "','" & TextBox5.Text & "','" & TextBox2.Text &
  381. "','','" & TextBox6.Text & "','" & ComboBox2.Text & "')"
  382. cmd.Connection = conn : cmd.CommandText = SQL1 : cmd.ExecuteNonQuery()
  383. MsgBox("新增完成")
  384. conn.Close()
  385. 格式設定() : ComboBox1下拉表單資料載入() : 讀取零組件零件BOM表()
  386. ComboBox1.Enabled = True
  387. End If
  388. End Sub
  389. Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click
  390. ComboBox1.Text = ""
  391. 格式設定() : ComboBox1下拉表單資料載入() : 讀取零組件零件BOM表()
  392. ComboBox1.SelectedIndex = 0
  393. End Sub
  394. Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
  395. Button2.Enabled = True : Button4.Enabled = True : Button5.Enabled = True : Button8.Enabled = False : Button9.Enabled = True : ComboBox1.Enabled = False
  396. Button13.Enabled = True
  397. End Sub
  398. Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click
  399. If ComboBox1.Enabled = True Or ComboBox3.Text = "-請選擇-" Or ComboBox4.Text = "-請選擇-" Or TextBox2.Text = "" Or TextBox6.Text = "" Or ComboBox2.Text = "" Then
  400. MsgBox("資料不足請檢查後重新確認")
  401. Else
  402. ConnOpen()
  403. SQL1 = "UPDATE 零組件成本紀錄表 SET 品牌 = '工巧明', 供應商 = '工巧明', 科目 = '" & ComboBox3.Text & "', 類型 = '" & ComboBox4.Text &
  404. "', 型號及備註 = '" & TextBox5.Text & "', 品名 = '" & TextBox2.Text & "', 供應商成本 = '', 進貨單價 = '" & TextBox6.Text &
  405. "', 幣別 = '" & ComboBox2.Text & "' WHERE (流水碼 = '" & ComboBox1.Text & "')"
  406. cmd.CommandText = SQL1 : cmd.ExecuteNonQuery()
  407. MsgBox("修改完成")
  408. conn.Close()
  409. 格式設定() : ComboBox1下拉表單資料載入() : 讀取零組件零件BOM表()
  410. End If
  411. End Sub
  412. Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click
  413. 格式設定() : ComboBox1下拉表單資料載入() : 讀取零組件零件BOM表()
  414. End Sub
  415. Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click
  416. Button10.Enabled = False : Button11.Enabled = True
  417. End Sub
  418. Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
  419. SQL1 = "DELETE FROM 零組件成本紀錄表 WHERE (流水碼 = '" & ComboBox1.Text & "')"
  420. SQL1 = "DELETE FROM 零組件零件BOM表 WHERE (機構碼 = '" & ComboBox1.Text & "')"
  421. cmd.CommandText = SQL : cmd.Connection = conn
  422. cmd.CommandText = SQL1 : cmd.Connection = conn
  423. ConnOpen()
  424. ConnOpen()
  425. Dim aa As MsgBoxResult
  426. aa = MsgBox("確定要刪除該筆資料?", MsgBoxStyle.OkCancel)
  427. If aa = MsgBoxResult.Ok Then : cmd.ExecuteNonQuery() : cmd.ExecuteNonQuery() : MsgBox("刪除完成") : End If
  428. conn.Close() : conn.Close()
  429. 格式設定() : ComboBox1下拉表單資料載入() : 讀取零組件零件BOM表()
  430. End Sub
  431. Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
  432. Dim xlApp As Microsoft.Office.Interop.Excel.Application
  433. Dim xlBook As Microsoft.Office.Interop.Excel.Workbook
  434. Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet
  435. xlApp = CType(CreateObject("Excel.Application"), Microsoft.Office.Interop.Excel.Application)
  436. xlBook = xlApp.Workbooks.Add
  437. xlApp.DisplayAlerts = True
  438. xlBook.Activate()
  439. xlSheet = NewMethod(xlBook)
  440. xlSheet.Activate()
  441. xlApp.Visible = True
  442. xlApp.Application.WindowState = xlMaximized
  443. xlSheet.Cells(2, 2) = "工巧明智能設備有限公司 零組件-零件BOM表" : xlSheet.Cells(3, 2) = "客戶名稱:" : xlSheet.Cells(4, 2) = "機購編號:" : xlSheet.Cells(5, 2) = "機構名稱:"
  444. xlSheet.Cells(6, 2) = "型號及備註:" : xlSheet.Cells(3, 8) = "機構科目:" : xlSheet.Cells(4, 8) = "機構類型:" : xlSheet.Cells(5, 8) = "技術開發課確認者:"
  445. xlSheet.Cells(6, 8) = "修改日期:" : xlSheet.Cells(6, 9) = String.Format("{0:d}", Now)
  446. xlSheet.Cells(7, 2) = "項次" : xlSheet.Cells(7, 3) = "零件流水碼" : xlSheet.Cells(7, 4) = "品牌" : xlSheet.Cells(7, 5) = "科目" : xlSheet.Cells(7, 6) = "品名"
  447. xlSheet.Cells(7, 7) = "型號及備註" : xlSheet.Cells(7, 9) = "數量" : xlSheet.Cells(7, 10) = "說明"
  448. xlSheet.Cells(4, 4) = ComboBox1.Text : xlSheet.Cells(5, 4) = TextBox2.Text : xlSheet.Cells(6, 4) = TextBox5.Text
  449. xlSheet.Cells(3, 9) = ComboBox3.Text : xlSheet.Cells(4, 9) = ComboBox4.Text
  450. For i As Integer = 0 To DataGridView1.Rows.Count - 1
  451. xlSheet.Cells(i + 8, 2) = i + 1
  452. xlSheet.Cells(i + 8, 3) = DataGridView1.Rows(i).Cells("零件流水碼").Value
  453. xlSheet.Cells(i + 8, 4) = DataGridView1.Rows(i).Cells("品牌").Value
  454. xlSheet.Cells(i + 8, 5) = DataGridView1.Rows(i).Cells("科目").Value
  455. xlSheet.Cells(i + 8, 6) = DataGridView1.Rows(i).Cells("品名").Value
  456. xlSheet.Cells(i + 8, 7) = DataGridView1.Rows(i).Cells("型號及備註").Value
  457. xlSheet.Cells(i + 8, 9) = DataGridView1.Rows(i).Cells("數量").Value
  458. With xlApp.Selection
  459. .Font.Bold = True
  460. End With
  461. KE = i
  462. Next i
  463. AA(xlApp, xlSheet)
  464. BB(xlApp, xlSheet)
  465. xlSheet.PageSetup.PrintArea = ""
  466. xlApp.Cells.Select()
  467. xlSheet.Range("B1").Select()
  468. xlApp.Application.WindowState = xlMinimized
  469. MsgBox("列印完成")
  470. End Sub
  471. Private Shared Function NewMethod(xlBook As Microsoft.Office.Interop.Excel.Workbook) As Microsoft.Office.Interop.Excel.Worksheet
  472. Return CType(xlBook.Worksheets.Add, Microsoft.Office.Interop.Excel.Worksheet)
  473. End Function
  474. Private Sub AA(ByVal myExcel As Microsoft.Office.Interop.Excel.Application, ByVal xlSheet As Microsoft.Office.Interop.Excel.Worksheet)
  475. xlSheet.Columns("A:A").ColumnWidth = 1
  476. xlSheet.Columns("C:C").ColumnWidth = 11
  477. xlSheet.Columns("B:B").ColumnWidth = 4
  478. xlSheet.Columns("D:E").ColumnWidth = 12
  479. xlSheet.Columns("F:F").ColumnWidth = 45
  480. xlSheet.Columns("G:H").ColumnWidth = 20
  481. xlSheet.Columns("I:I").ColumnWidth = 5
  482. xlSheet.Columns("J:J").ColumnWidth = 35
  483. xlSheet.Rows("1:1").Select : myExcel.Selection.RowHeight = 5
  484. xlSheet.Rows("2:2").Select : myExcel.Selection.RowHeight = 30
  485. xlSheet.Rows("3:7").Select : myExcel.Selection.RowHeight = 15
  486. xlSheet.Rows("7:7").Select : myExcel.Selection.RowHeight = 25
  487. xlSheet.Range("B3:C3,B4:C4,B5:C5,B6:C6,D4:G4,D5:G5,D6:G6,D3:G3,I3:J3,I4:J4,I5:J5,I6:J6,B2:J2,G7:H7").Select()
  488. xlSheet.Range("G7").Activate()
  489. With myExcel.Selection
  490. .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
  491. .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False
  492. End With
  493. myExcel.Selection.Merge
  494. xlSheet.Range("D3:G6").Select()
  495. With myExcel.Selection
  496. .HorizontalAlignment = xlLeft : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
  497. .ShrinkToFit = False : .ReadingOrder = xlContext
  498. End With
  499. xlSheet.Range("I3:J6").Select()
  500. With myExcel.Selection
  501. .HorizontalAlignment = xlLeft : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
  502. .ShrinkToFit = False : .ReadingOrder = xlContext
  503. End With
  504. xlSheet.Cells.Select()
  505. With myExcel.Selection.Font
  506. .Name = "微軟正黑體" : .Size = 10 : .Strikethrough = False : .Superscript = False : .Subscript = False : .OutlineFont = False : .Shadow = False
  507. .Underline = xlUnderlineStyleNone : .ThemeColor = xlThemeColorLight1 : .TintAndShade = 0 : .ThemeFont = xlThemeFontNone
  508. End With
  509. xlSheet.Range("B2:L2").Select()
  510. With myExcel.Selection.Font
  511. .Name = "微軟正黑體" : .Size = 14 : .Strikethrough = False : .Superscript = False : .Subscript = False : .OutlineFont = False : .Shadow = False
  512. .Underline = xlUnderlineStyleNone : .ThemeColor = xlThemeColorLight1 : .TintAndShade = 0 : .ThemeFont = xlThemeFontNone
  513. End With
  514. xlSheet.Range("B2:J7").Select()
  515. myExcel.Selection.Borders(xlDiagonalDown).LineStyle = xlNone : myExcel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  516. With myExcel.Selection.Borders(xlEdgeLeft) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  517. With myExcel.Selection.Borders(xlEdgeTop) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  518. With myExcel.Selection.Borders(xlEdgeBottom) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  519. With myExcel.Selection.Borders(xlEdgeRight) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  520. With myExcel.Selection.Borders(xlInsideVertical) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  521. With myExcel.Selection.Borders(xlInsideHorizontal) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  522. xlSheet.Range("B2:J6").Select()
  523. myExcel.Selection.Borders(xlDiagonalDown).LineStyle = xlNone : myExcel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  524. With myExcel.Selection.Borders(xlEdgeLeft) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With
  525. With myExcel.Selection.Borders(xlEdgeTop) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With
  526. With myExcel.Selection.Borders(xlEdgeBottom) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With
  527. With myExcel.Selection.Borders(xlEdgeRight) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With
  528. With myExcel.Selection.Borders(xlInsideVertical) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  529. With myExcel.Selection.Borders(xlInsideHorizontal) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  530. xlSheet.Columns("B:B").Select
  531. With myExcel.Selection
  532. .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
  533. .ShrinkToFit = False : .ReadingOrder = xlContext
  534. End With
  535. xlSheet.Columns("I:I").Select
  536. With myExcel.Selection
  537. .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
  538. .ShrinkToFit = False : .ReadingOrder = xlContext
  539. End With
  540. xlSheet.Range("B7:J7").Select()
  541. With myExcel.Selection
  542. .HorizontalAlignment = xlGeneral : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
  543. .ShrinkToFit = False : .ReadingOrder = xlContext
  544. End With
  545. With myExcel.Selection
  546. .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
  547. .ShrinkToFit = False : .ReadingOrder = xlContext
  548. End With
  549. xlSheet.Range("B3:C6").Select()
  550. With myExcel.Selection
  551. .HorizontalAlignment = xlLeft : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
  552. .ShrinkToFit = False : .ReadingOrder = xlContext
  553. End With
  554. xlSheet.Rows("8:8").Select : myExcel.ActiveWindow.FreezePanes = True
  555. xlSheet.Rows("7:7").Select : myExcel.Selection.AutoFilter
  556. With myExcel.Selection
  557. .VerticalAlignment = xlTop : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0 : .ShrinkToFit = False
  558. .ReadingOrder = xlContext
  559. End With
  560. xlSheet.Range("G12").Select() : myExcel.ActiveWindow.DisplayGridlines = False
  561. xlSheet.Range("D3:G6,H3:H6,I3:J6").Select() : xlSheet.Range("I3").Activate()
  562. With myExcel.Selection
  563. .HorizontalAlignment = xlLeft : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
  564. .ShrinkToFit = False : .ReadingOrder = xlContext
  565. End With
  566. xlSheet.Range("B1").Select()
  567. End Sub
  568. Private Sub BB(ByVal myExcel As Microsoft.Office.Interop.Excel.Application, ByVal xlSheet As Microsoft.Office.Interop.Excel.Worksheet)
  569. Dim A As String : Dim 位置 As String
  570. For i As Integer = 1 To DataGridView1.Rows.Count - 1
  571. If DataGridView1.Rows(i - 1).Cells("科目").Value <> DataGridView1.Rows(i).Cells("科目").Value Then
  572. A = "B" & i + 8 & ":" & "j" & i + 8
  573. xlSheet.Range(A).Select()
  574. myExcel.Selection.Borders(xlDiagonalDown).LineStyle = xlNone : myExcel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  575. myExcel.Selection.Borders(xlEdgeLeft).LineStyle = xlNone
  576. With myExcel.Selection.Borders(xlEdgeTop) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  577. myExcel.Selection.Borders(xlEdgeBottom).LineStyle = xlNone : myExcel.Selection.Borders(xlEdgeRight).LineStyle = xlNone
  578. myExcel.Selection.Borders(xlInsideVertical).LineStyle = xlNone : myExcel.Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
  579. End If
  580. Next i
  581. 位置 = "C8:H" & KE + 8
  582. xlSheet.Range(位置).Select()
  583. With myExcel.Selection
  584. .HorizontalAlignment = xlLeft : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
  585. .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False
  586. End With
  587. xlSheet.Range("B7:J7").Select()
  588. With myExcel.Selection.Interior
  589. .Pattern = xlSolid : .PatternColorIndex = xlAutomatic : .ThemeColor = xlThemeColorAccent3 : .TintAndShade = 0.399975585192419 : .PatternTintAndShade = 0
  590. End With
  591. xlSheet.Cells.Select()
  592. With myExcel.Selection : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0 : .ShrinkToFit = False : .ReadingOrder = xlContext : End With
  593. xlSheet.Range("B1").Select()
  594. End Sub
  595. Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click
  596. If My.Application.OpenForms.Item("零組件零件成本建檔") IsNot Nothing Then
  597. 零組件零件成本建檔.BringToFront()
  598. Else
  599. 零組件零件成本建檔.Show()
  600. End If
  601. End Sub
  602. Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click
  603. 條件 = InputBox("請輸入要查詢的零組件編號或類別、科目")
  604. 零組件清單()
  605. End Sub
  606. End Class