Option Strict Off Imports System.IO Public Class 量產生產進度表 Private ReadOnly ds As New DataSet Dim xlApp As Microsoft.Office.Interop.Excel.Application Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet Private ReadOnly BB(3) As Boolean Dim 已超出 As Boolean Private Sub Set_訂單清單() 主表單_dgv.DataSource = Nothing : ds.Clear() 主表單_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 主表單_dgv.ColumnHeadersHeight = 40 主表單_dgv.AllowUserToAddRows = False SQL_量產生產進度表清單() da.Fill(ds) : 主表單_dgv.DataSource = ds.Tables(0) : conn.Close() End Sub Private Sub Set_grid() 主表單_dgv.Columns(0).FillWeight = 80 : 主表單_dgv.Columns(1).FillWeight = 120 : 主表單_dgv.Columns(2).FillWeight = 85 : 主表單_dgv.Columns(3).FillWeight = 105 主表單_dgv.Columns(4).FillWeight = 100 : 主表單_dgv.Columns(5).FillWeight = 90 : 主表單_dgv.Columns(6).FillWeight = 50 : 主表單_dgv.Columns(7).FillWeight = 80 主表單_dgv.Columns(8).FillWeight = 70 : 主表單_dgv.Columns(9).FillWeight = 80 : 主表單_dgv.Columns(10).FillWeight = 120 : 主表單_dgv.Columns(11).FillWeight = 60 主表單_dgv.Columns(12).FillWeight = 626 : 主表單_dgv.Columns(13).FillWeight = 100 : 主表單_dgv.Columns(14).FillWeight = 100 : 主表單_dgv.Columns(15).FillWeight = 127 主表單_dgv.Columns(16).FillWeight = 127 : 主表單_dgv.Columns(17).FillWeight = 127 : 主表單_dgv.Columns(18).FillWeight = 127 : 主表單_dgv.Columns(19).FillWeight = 126 主表單_dgv.Columns(20).FillWeight = 126 : 主表單_dgv.Columns(21).FillWeight = 126 : 主表單_dgv.Columns(22).FillWeight = 120 : 主表單_dgv.Columns(23).FillWeight = 120 主表單_dgv.Columns(24).FillWeight = 120 : 主表單_dgv.Columns(25).FillWeight = 120 : 主表單_dgv.Columns(26).FillWeight = 120 : 主表單_dgv.Columns(27).FillWeight = 286 主表單_dgv.Columns(28).Visible = False : 主表單_dgv.Columns(29).Visible = False 主表單_dgv.Columns(8).DefaultCellStyle.Format = "#,##0" 主表單_dgv.Columns(8).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 主表單_dgv.Columns(8).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight '886 If BB(0) = True And BB(1) = True And BB(2) = True And BB(3) = True Then 主表單_dgv.Columns(11).Visible = True : 主表單_dgv.Columns(12).Visible = True : 主表單_dgv.Columns(13).Visible = True : 主表單_dgv.Columns(14).Visible = True 主表單_dgv.Columns(15).Visible = False : 主表單_dgv.Columns(16).Visible = False : 主表單_dgv.Columns(17).Visible = False : 主表單_dgv.Columns(18).Visible = False 主表單_dgv.Columns(19).Visible = False : 主表單_dgv.Columns(20).Visible = False : 主表單_dgv.Columns(21).Visible = False : 主表單_dgv.Columns(22).Visible = False 主表單_dgv.Columns(23).Visible = False : 主表單_dgv.Columns(24).Visible = False : 主表單_dgv.Columns(25).Visible = False : 主表單_dgv.Columns(26).Visible = False 主表單_dgv.Columns(27).Visible = False ElseIf BB(0) = False And BB(1) = True And BB(2) = True And BB(3) = True Then 主表單_dgv.Columns(11).Visible = False : 主表單_dgv.Columns(12).Visible = False : 主表單_dgv.Columns(13).Visible = False : 主表單_dgv.Columns(14).Visible = False 主表單_dgv.Columns(15).Visible = True : 主表單_dgv.Columns(16).Visible = True : 主表單_dgv.Columns(17).Visible = True : 主表單_dgv.Columns(18).Visible = True 主表單_dgv.Columns(19).Visible = True : 主表單_dgv.Columns(20).Visible = True : 主表單_dgv.Columns(21).Visible = True 主表單_dgv.Columns(22).Visible = False : 主表單_dgv.Columns(23).Visible = False : 主表單_dgv.Columns(24).Visible = False : 主表單_dgv.Columns(25).Visible = False 主表單_dgv.Columns(26).Visible = False : 主表單_dgv.Columns(27).Visible = False ElseIf BB(0) = True And BB(1) = False And BB(2) = True And BB(3) = True Then 主表單_dgv.Columns(11).Visible = False : 主表單_dgv.Columns(12).Visible = False : 主表單_dgv.Columns(13).Visible = False : 主表單_dgv.Columns(14).Visible = False 主表單_dgv.Columns(15).Visible = False : 主表單_dgv.Columns(16).Visible = False : 主表單_dgv.Columns(17).Visible = False : 主表單_dgv.Columns(18).Visible = False 主表單_dgv.Columns(19).Visible = False : 主表單_dgv.Columns(20).Visible = False : 主表單_dgv.Columns(21).Visible = False 主表單_dgv.Columns(22).Visible = True : 主表單_dgv.Columns(23).Visible = True : 主表單_dgv.Columns(24).Visible = True : 主表單_dgv.Columns(25).Visible = True 主表單_dgv.Columns(26).Visible = True : 主表單_dgv.Columns(27).Visible = True End If End Sub Private Sub 量產生產進度表_Load(sender As Object, e As EventArgs) Handles MyBase.Load WINPROFIT_ERP_SYS.WindowState = 2 : Me.MdiParent = WINPROFIT_ERP_SYS : Me.WindowState = 2 : Me.AutoScroll = True BB(0) = True : BB(1) = True : BB(2) = True : BB(3) = True 第一頁_bt.Enabled = False Set_訂單清單() : Set_grid() 清除條件_bt.PerformClick() End Sub Private Sub 主表單_dgv_CellClick(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) Handles 主表單_dgv.CellClick If e.RowIndex = -1 Then : Else : PA = 主表單_dgv.Rows(e.RowIndex).Cells("型體號碼").Value PictureBox1.Image = Nothing : SQL_鞋型圖片資料庫一張圖片() If dr.Read() Then : PictureBox1.Image = Nothing : SQL_鞋型圖片資料庫一張圖片() While dr.Read() = True Dim unused As Byte() = New Byte(-1) {} : Dim bytes As Byte() = DirectCast(dr.Item("圖片"), Byte()) Dim oStream As New MemoryStream(bytes) : PictureBox1.Image = Bitmap.FromStream(oStream) End While : conn.Close() Else : PictureBox1.Image = Nothing : SQL_鞋型圖片資料庫一張圖片() If dr.Read() Then : PictureBox1.Image = Nothing : SQL_鞋型圖片資料庫一張圖片() While dr.Read() = True Dim unused1 As Byte() = New Byte(-1) {} : Dim bytes As Byte() = DirectCast(dr.Item("圖片"), Byte()) Dim oStream As New MemoryStream(bytes) : PictureBox1.Image = Bitmap.FromStream(oStream) End While : conn.Close() Else : PictureBox1.Image = Nothing : SQL_圖片1() If dr.Read() Then : PictureBox1.Image = Nothing : SQL_圖片1() While dr.Read() = True Dim unused2 As Byte() = New Byte(-1) {} : Dim bytes As Byte() = DirectCast(dr.Item("圖片"), Byte()) Dim oStream As New MemoryStream(bytes) : PictureBox1.Image = Bitmap.FromStream(oStream) End While : conn.Close() Else : conn.Close() : End If End If End If : PictureBox1.SizeMode = 4 If 主表單_dgv.Rows(e.RowIndex).Cells("驗報圖庫").Value.ToString <> "" Then PA1 = 主表單_dgv.Rows(e.RowIndex).Cells("驗報圖庫").Value.ToString : PA2 = 主表單_dgv.Rows(e.RowIndex).Cells("驗貨報告圖片").Value.ToString SQL_驗貨報告() : PictureBox2.Image = Nothing While dr.Read() = True Dim unused3 As Byte() = New Byte(-1) {} : Dim bytes As Byte() = DirectCast(dr.Item("驗貨報告"), Byte()) Dim oStream As New MemoryStream(bytes) : PictureBox2.Image = Bitmap.FromStream(oStream) End While conn.Close() : PictureBox2.SizeMode = 4 驗貨報告 = 主表單_dgv.Rows(e.RowIndex).Cells("驗貨報告圖片").Value.ToString : 圖片庫 = 主表單_dgv.Rows(e.RowIndex).Cells("驗報圖庫").Value.ToString Else PictureBox2.Image = Nothing End If End If End Sub Private Sub 主表單_dgv_RowPostPaint(ByVal sender As Object, ByVal e As DataGridViewRowPostPaintEventArgs) Handles 主表單_dgv.RowPostPaint Dim linePen As New Pen(Color.Blue, 2) If e.RowIndex = 主表單_dgv.Rows.Count - 1 Then : Exit Sub : Else If 主表單_dgv(2, e.RowIndex).Value.ToString <> 主表單_dgv(2, e.RowIndex + 1).Value.ToString Then Dim startX As Integer = IIf(主表單_dgv.RowHeadersVisible, 主表單_dgv.RowHeadersWidth, 0) Dim startY As Integer = e.RowBounds.Top + e.RowBounds.Height - 1 Dim endX As Integer = startX + 主表單_dgv.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - 主表單_dgv.HorizontalScrollingOffset e.Graphics.DrawLine(linePen, startX, startY, endX, startY) Exit Sub End If End If End Sub Private Sub 清除條件_bt_Click(sender As Object, e As EventArgs) Handles 清除條件_bt.Click PA33 = "" SQL_客戶簡稱() : 客戶_cb.Items.Clear() : While (dr.Read()) : 客戶_cb.Items.Add(dr("客戶簡稱")) : End While : conn.Close() SQL_季節清單() : 季節_cb.Items.Clear() : While (dr.Read()) : 季節_cb.Items.Add(dr("SEASON")) : End While : conn.Close() SQL_工廠控制表1() : 工廠_cb.Items.Clear() : While (dr.Read()) : 工廠_cb.Items.Add(dr("工廠")) : End While : conn.Close() PA33 = 客戶_cb.Text : SQL_型體號碼() : 型體號碼_cb.Items.Clear() : While (dr.Read()) : 型體號碼_cb.Items.Add(dr("型體號碼")) : End While : conn.Close() PA33 = 型體號碼_cb.Text : SQL_型體控制表2() : 型體名稱_cb.Items.Clear() : While (dr.Read()) : 型體名稱_cb.Items.Add(dr("型體名稱")) : End While : conn.Close() Set_訂單清單() : Set_grid() End Sub Private Sub 客戶_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 客戶_cb.SelectedIndexChanged PA33 = 客戶_cb.Text : SQL_型體號碼() : 型體號碼_cb.Items.Clear() While (dr.Read()) : 型體號碼_cb.Items.Add(dr("型體號碼")) : End While : conn.Close() : Set_訂單清單() : Set_grid() End Sub Private Sub 型體號碼_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 型體號碼_cb.SelectedIndexChanged PA33 = 型體號碼_cb.Text : SQL_型體控制表2() : 型體名稱_cb.Items.Clear() While (dr.Read()) : 型體名稱_cb.Items.Add(dr("型體名稱")) : End While : conn.Close() : Set_訂單清單() : Set_grid() End Sub Private Sub 季節_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 季節_cb.SelectedIndexChanged Set_訂單清單() : Set_grid() End Sub Private Sub 工廠_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 工廠_cb.SelectedIndexChanged Set_訂單清單() : Set_grid() End Sub Private Sub 型體名稱_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 型體名稱_cb.SelectedIndexChanged Set_訂單清單() : Set_grid() End Sub Private Sub Button28_Click(sender As Object, e As EventArgs) Handles 列印_bt.Click 列印_生產進度表.Show() End Sub Private Sub Button4_Click(sender As Object, e As EventArgs) Handles 森康回饋資訊Excel導入_bt.Click If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then file_name = OpenFileDialog1.FileName End If xlApp = CreateObject("Excel.Application") xlApp.DisplayAlerts = True xlApp.Visible = True xlApp.Workbooks.Open(file_name) xlSheet = xlApp.Worksheets(1) : xlSheet.Activate() For i As Integer = 4 To 99999 TextBox1.Text = xlSheet.Cells(i, 4).value TextBox2.Text = xlSheet.Cells(i, 1).value : If TextBox2.Text = "" Then : Else : TextBox2.Text = Format(xlSheet.Cells(i, 1).value, "yyyy/MM/dd") : End If TextBox3.Text = xlSheet.Cells(i, 10).value : If TextBox3.Text = "" Then : Else : TextBox3.Text = Format(xlSheet.Cells(i, 10).value, "yyyy/MM/dd") : End If If TextBox1.Text <> "" Then PA = xlSheet.Cells(i, 14).value : PA1 = xlSheet.Cells(i, 16).value : PA2 = xlSheet.Cells(i, 16).value PA3 = xlSheet.Cells(i, 17).value : PA4 = xlSheet.Cells(i, 18).value : PA5 = xlSheet.Cells(i, 19).value PA6 = xlSheet.Cells(i, 20).value : PA7 = xlSheet.Cells(i, 21).value : PA8 = xlSheet.Cells(i, 22).value PA9 = xlSheet.Cells(i, 23).value : PA10 = xlSheet.Cells(i, 24).value : PA11 = xlSheet.Cells(i, 25).value PA12 = xlSheet.Cells(i, 26).value : PA13 = xlSheet.Cells(i, 27).value : PA14 = xlSheet.Cells(i, 28).value PA15 = xlSheet.Cells(i, 3).value : PA16 = xlSheet.Cells(i, 4).value : PA17 = xlSheet.Cells(i, 8).value PA18 = xlSheet.Cells(i, 7).value : PA19 = xlSheet.Cells(i, 9).value : PA20 = xlSheet.Cells(i, 5).value SQL_森康列印清單() : conn.Close() Else i = 99999 End If TextBox6.Text = i Next xlApp.Visible = True : xlApp.Quit() : xlApp = Nothing TextBox6.Text = "" MsgBox("資料導入完成") Set_訂單清單() : Set_grid() End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles 巨益回饋資訊Excel導入_bt.Click If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then file_name = OpenFileDialog1.FileName End If xlApp = CreateObject("Excel.Application") xlApp.DisplayAlerts = True xlApp.Visible = True xlApp.Workbooks.Open(file_name) xlSheet = xlApp.Worksheets(1) : xlSheet.Activate() For i As Integer = 4 To 99999 TextBox1.Text = xlSheet.Cells(i, 4).value TextBox2.Text = xlSheet.Cells(i, 1).value : If TextBox2.Text = "" Then : Else : TextBox2.Text = Format(xlSheet.Cells(i, 1).value, "yyyy/MM/dd") : End If TextBox3.Text = xlSheet.Cells(i, 10).value : If TextBox3.Text = "" Then : Else : TextBox3.Text = Format(xlSheet.Cells(i, 10).value, "yyyy/MM/dd") : End If If TextBox1.Text <> "" Then PA21 = xlSheet.Cells(i, 12).value : PA22 = xlSheet.Cells(i, 13).value : PA23 = xlSheet.Cells(i, 3).value PA24 = xlSheet.Cells(i, 4).value : PA25 = xlSheet.Cells(i, 8).value : PA26 = xlSheet.Cells(i, 7).value PA27 = xlSheet.Cells(i, 9).value : PA28 = xlSheet.Cells(i, 5).value SQL_巨益列印清單() : conn.Close() Else i = 99999 End If TextBox6.Text = i Next xlApp.Visible = True : xlApp.Quit() : xlApp = Nothing TextBox6.Text = "" MsgBox("資料導入完成") Set_訂單清單() : Set_grid() End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles 第一頁_bt.Click 第一頁_bt.Enabled = False : 第二頁_bt.Enabled = True : 第三頁_bt.Enabled = True BB(0) = True : BB(1) = True : BB(2) = True : BB(3) = True Set_grid() End Sub Private Sub Button34_Click(sender As Object, e As EventArgs) Handles 第二頁_bt.Click 第一頁_bt.Enabled = True : 第二頁_bt.Enabled = False : 第三頁_bt.Enabled = True BB(0) = False : BB(1) = True : BB(2) = True : BB(3) = True Set_grid() End Sub Private Sub Button35_Click(sender As Object, e As EventArgs) Handles 第三頁_bt.Click 第一頁_bt.Enabled = True : 第二頁_bt.Enabled = True : 第三頁_bt.Enabled = False BB(0) = True : BB(1) = False : BB(2) = True : BB(3) = True Set_grid() End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles 關鍵字查詢_bt.Click PA = InputBox("請輸入要查詢的資料") Set_訂單清單() : Set_grid() End Sub Private Sub Button20_Click(sender As Object, e As EventArgs) Handles 驗貨報告大圖_bt.Click 驗貨報告大圖.ShowDialog() End Sub Private Sub Button8_Click(sender As Object, e As EventArgs) Handles 順時鐘90度旋轉_bt.Click PictureBox2.Image.RotateFlip(RotateFlipType.Rotate90FlipNone) : PictureBox2.Refresh() : PictureBox2.SizeMode = 4 End Sub Private Sub Button7_Click(sender As Object, e As EventArgs) Handles 逆時鐘90度旋轉_bt.Click PictureBox2.Image.RotateFlip(RotateFlipType.Rotate270FlipNone) : PictureBox2.Refresh() : PictureBox2.SizeMode = 4 End Sub Private Sub Button6_Click(sender As Object, e As EventArgs) Handles 水平翻轉_bt.Click PictureBox2.Image.RotateFlip(RotateFlipType.Rotate180FlipY) : PictureBox2.Refresh() : PictureBox2.SizeMode = 4 End Sub Private Sub Button5_Click(sender As Object, e As EventArgs) Handles 垂直翻轉_bt.Click PictureBox2.Image.RotateFlip(RotateFlipType.Rotate180FlipX) : PictureBox2.Refresh() : PictureBox2.SizeMode = 4 End Sub Private Sub 流水帳_dgv_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 主表單_dgv.MouseUp If 主表單_dgv.SelectedCells.Count = 1 Then 已超出 = False End If If 主表單_dgv.SelectedCells.Count > 0 Then '設定滑鼠點擊DGV時候的範圍,超出範圍時有可能不是數字所以不計算 If 主表單_dgv.SelectedCells(0).ColumnIndex = 8 Then If 已超出 = False Then Dim x As Double = 0 For i As Integer = 0 To 主表單_dgv.SelectedCells.Count - 1 ' 主表單_dgv.SelectedCells.Item(i).ColumnIndex + 8 是因為該DGV顯示項與計算像剛好差8格,使用時要注意可直接計算的不需要加數字。 x += Val(主表單_dgv.Rows(主表單_dgv.SelectedCells.Item(i).RowIndex).Cells(主表單_dgv.SelectedCells.Item(i).ColumnIndex).Value) Next i '將計算好的資料放置到指定的控件中 加總_tb.Text = Strings.Format(x, "#,##0") WINPROFIT_ERP_SYS.合計_TSSL.Text = "合計 : " & Strings.Format(x, "#,##0") Else 加總_tb.Text = Strings.Format(0, "#,##0") WINPROFIT_ERP_SYS.合計_TSSL.Text = "合計 : " & Strings.Format(0, "#,##0") End If Else 已超出 = True 加總_tb.Text = Strings.Format(0, "#,##0") WINPROFIT_ERP_SYS.合計_TSSL.Text = "合計 : " & Strings.Format(0, "#,##0") End If End If End Sub End Class