Option Strict Off Imports System.IO Public Class 量產出貨明細表 Private ReadOnly ds As New DataSet Dim 已超出 As Boolean Private Sub Set_訂單清單() 主表單_dgv.DataSource = Nothing : ds.Clear() 主表單_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 主表單_dgv.ColumnHeadersHeight = 25 主表單_dgv.AllowUserToAddRows = False SQL_量產出貨明細表單() 列印用SQL = SQL1 da.Fill(ds) : 主表單_dgv.DataSource = ds.Tables(0) : conn.Close() 主表單_dgv.Columns(0).Visible = False : 主表單_dgv.Columns(1).FillWeight = 155 : 主表單_dgv.Columns(2).FillWeight = 60 : 主表單_dgv.Columns(3).FillWeight = 120 主表單_dgv.Columns(4).FillWeight = 200 : 主表單_dgv.Columns(5).FillWeight = 130 : 主表單_dgv.Columns(6).FillWeight = 60 : 主表單_dgv.Columns(7).FillWeight = 80 主表單_dgv.Columns(8).FillWeight = 80 : 主表單_dgv.Columns(9).FillWeight = 235 : 主表單_dgv.Columns(10).Visible = False : 主表單_dgv.Columns(11).FillWeight = 80 主表單_dgv.Columns(12).FillWeight = 80 : 主表單_dgv.Columns(13).FillWeight = 80 : 主表單_dgv.Columns(14).FillWeight = 80 : 主表單_dgv.Columns(15).FillWeight = 90 主表單_dgv.Columns(16).FillWeight = 90 : 主表單_dgv.Columns(17).Visible = False : 主表單_dgv.Columns(18).Visible = False : 主表單_dgv.Columns(19).Visible = False 主表單_dgv.Columns(7).DefaultCellStyle.Format = "#,##0" 主表單_dgv.Columns(7).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 主表單_dgv.Columns(7).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight 主表單_dgv.Columns(8).DefaultCellStyle.Format = "#,##0" 主表單_dgv.Columns(8).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 主表單_dgv.Columns(8).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight End Sub Private Sub ComboBox1下拉表單資料載入() SQL_季節清單1() 季節_cb.Items.Clear() : While (dr.Read()) : 季節_cb.Items.Add(dr("SEASON")) : End While : conn.Close() End Sub Private Sub ComboBox5下拉表單資料載入() SQL_工廠控制表1() 工廠_cb.Items.Clear() : While (dr.Read()) : 工廠_cb.Items.Add(dr("工廠")) : End While : conn.Close() 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 流水號_tb.Enabled = False : 明細是否建檔_ch.Enabled = False : 開啟訂單明細表_bt.Enabled = False ComboBox1下拉表單資料載入() : ComboBox5下拉表單資料載入() kkk1 = "WHERE (訂單控制表.CXL IS NULL or 訂單控制表.CXL = 0)" Set_訂單清單() End Sub Private Sub 主表單_dgv_CellClick(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) Handles 主表單_dgv.CellClick If e.RowIndex = -1 Then : Else 流水號_tb.Text = 主表單_dgv(1, e.RowIndex).Value.ToString : 資料流水號_tb.Text = 主表單_dgv("資料流水號", e.RowIndex).Value.ToString 明細是否建檔_ch.Checked = 主表單_dgv(16, e.RowIndex).Value.ToString : 實際離場_dtp.Value = 主表單_dgv("實際離廠日", e.RowIndex).Value If 明細是否建檔_ch.Checked = False Then : 開啟訂單明細表_bt.Enabled = False : Else : 開啟訂單明細表_bt.Enabled = True : End If PictureBox1.Image = Nothing : PA = 主表單_dgv.Rows(e.RowIndex).Cells("形體號").Value SQL_鞋型圖片資料庫一張圖片() If dr.Read() Then : PictureBox1.Image = Nothing : SQL_鞋型圖片資料庫一張圖片() While dr.Read() = True Dim bytes As Byte() = New Byte(-1) {} bytes = 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 bytes As Byte() = New Byte(-1) {} bytes = DirectCast(dr.Item("圖片"), Byte()) Dim oStream As New MemoryStream(bytes) PictureBox1.Image = Bitmap.FromStream(oStream) End While : conn.Close() Else PictureBox1.Image = Nothing : PA8 = 主表單_dgv.Rows(e.RowIndex).Cells("形體號").Value : SQL_圖片() If dr.Read() Then : PictureBox1.Image = Nothing : SQL_圖片() While dr.Read() = True Dim bytes As Byte() = New Byte(-1) {} bytes = 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 bytes As Byte() = New Byte(-1) {} bytes = 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(1, e.RowIndex).Value.ToString <> 主表單_dgv(1, 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 PA = InputBox("請輸入要查詢的資料") : Set_訂單清單() : PA = "" End Sub Private Sub Button30_Click(sender As Object, e As EventArgs) Handles 開啟訂單明細表_bt.Click If 流水號_tb.Text = "" Then MsgBox("請先選擇訂單資料") Else PA = 流水號_tb.Text 量產訂單明細表.Show() : 量產訂單明細表.WindowState = 2 End If 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 ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 季節_cb.SelectedIndexChanged If SEASON_ch.Checked = True Then kkk1 = "WHERE (訂單控制表.CXL IS NULL or 訂單控制表.CXL = 0) AND 貨款匯入出款明細表.年份季度 LIKE '" & 季節_cb.Text & "' " Set_訂單清單() Else : kkk1 = "WHERE ((訂單控制表.CXL IS NULL or 訂單控制表.CXL = 0)) " : Set_訂單清單() : End If End Sub Private Sub ComboBox6_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 訂單種類_cb.SelectedIndexChanged If DIV_ch.Checked = True Then kkk2 = "AND 訂單控制表.訂單種類 LIKE '" & 訂單種類_cb.Text & "' " Else : kkk2 = "" : End If End Sub Private Sub ComboBox5_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 工廠_cb.SelectedIndexChanged If FTY_ch.Checked = True Then kkk3 = " AND 訂單控制表.生產工廠 LIKE '" & 工廠_cb.Text & "' " Set_訂單清單() Else : kkk3 = "" : End If End Sub Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles SEASON_ch.Click If SEASON_ch.Checked = True Then kkk1 = "WHERE (訂單控制表.CXL IS NULL or 訂單控制表.CXL = 0) AND 貨款匯入出款明細表.年份季度 LIKE '" & 季節_cb.Text & "' " Else kkk1 = "WHERE ((訂單控制表.CXL IS NULL or 訂單控制表.CXL = 0)) " End If End Sub Private Sub CheckBox8_CheckedChanged(sender As Object, e As EventArgs) Handles DIV_ch.Click If DIV_ch.Checked = True Then kkk2 = "AND 訂單控制表.訂單種類 LIKE '" & 訂單種類_cb.Text & "' " Else : kkk2 = "" : End If End Sub Private Sub CheckBox7_CheckedChanged(sender As Object, e As EventArgs) Handles FTY_ch.Click If FTY_ch.Checked = True Then kkk3 = " AND 訂單控制表.生產工廠 LIKE '" & 工廠_cb.Text & "' " Else : kkk3 = "" : End If End Sub Private Sub CheckBox6_CheckedChanged(sender As Object, e As EventArgs) Handles CUSTXF_ch.Click If CUSTXF_ch.Checked = True Then kkk4 = " AND 訂單控制表.客戶交期 BETWEEN '" & Format(開始1_dtp.Value, "yyyy/MM/dd") & "' AND '" & Format(結束1_dtp.Value, "yyyy/MM/dd") & "' " Else : kkk4 = "" : End If End Sub Private Sub CheckBox3_CheckedChanged(sender As Object, e As EventArgs) Handles FTYXF_ch.Click If FTYXF_ch.Checked = True Then kkk5 = " AND 訂單控制表.工廠回復交期 BETWEEN '" & Format(開始2_dtp.Value, "yyyy/MM/dd") & "' AND '" & Format(結束2_dtp.Value, "yyyy/MM/dd") & "' " Else : kkk5 = "" : End If End Sub Private Sub CheckBox4_CheckedChanged(sender As Object, e As EventArgs) Handles RLFXF_ch.Click If RLFXF_ch.Checked = True Then kkk6 = " AND 貨款匯入出款明細表.實際離廠日 BETWEEN '" & Format(開始3_dtp.Value, "yyyy/MM/dd") & "' AND '" & Format(結束3_dtp.Value, "yyyy/MM/dd") & "' " Else : kkk6 = "" : End If End Sub Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles 開始1_dtp.ValueChanged If CUSTXF_ch.Checked = True Then kkk4 = " AND 訂單控制表.客戶交期 BETWEEN '" & Format(開始1_dtp.Value, "yyyy/MM/dd") & "' AND '" & Format(結束1_dtp.Value, "yyyy/MM/dd") & "' " Set_訂單清單() Else kkk1 = "WHERE (訂單控制表.CXL IS NULL or 訂單控制表.CXL = 0)" Set_訂單清單() End If End Sub Private Sub DateTimePicker2_ValueChanged(sender As Object, e As EventArgs) Handles 結束1_dtp.ValueChanged If CUSTXF_ch.Checked = True Then kkk4 = " AND 訂單控制表.客戶交期 BETWEEN '" & Format(開始1_dtp.Value, "yyyy/MM/dd") & "' AND '" & Format(結束1_dtp.Value, "yyyy/MM/dd") & "' " Set_訂單清單() Else kkk1 = "WHERE (訂單控制表.CXL IS NULL or 訂單控制表.CXL = 0)" Set_訂單清單() End If End Sub Private Sub DateTimePicker3_ValueChanged(sender As Object, e As EventArgs) Handles 開始2_dtp.ValueChanged If FTYXF_ch.Checked = True Then kkk5 = " AND 訂單控制表.工廠回復交期 BETWEEN '" & Format(開始2_dtp.Value, "yyyy/MM/dd") & "' AND '" & Format(結束2_dtp.Value, "yyyy/MM/dd") & "' " Set_訂單清單() Else kkk1 = "WHERE (訂單控制表.CXL IS NULL or 訂單控制表.CXL = 0)" Set_訂單清單() End If End Sub Private Sub DateTimePicker4_ValueChanged(sender As Object, e As EventArgs) Handles 結束2_dtp.ValueChanged If FTYXF_ch.Checked = True Then kkk5 = " AND 訂單控制表.工廠回復交期 BETWEEN '" & Format(開始2_dtp.Value, "yyyy/MM/dd") & "' AND '" & Format(結束2_dtp.Value, "yyyy/MM/dd") & "' " Set_訂單清單() Else kkk1 = "WHERE (訂單控制表.CXL IS NULL or 訂單控制表.CXL = 0)" Set_訂單清單() End If End Sub Private Sub DateTimePicker5_ValueChanged(sender As Object, e As EventArgs) Handles 開始3_dtp.ValueChanged If RLFXF_ch.Checked = True Then kkk6 = " AND 貨款匯入出款明細表.實際離廠日 BETWEEN '" & Format(開始3_dtp.Value, "yyyy/MM/dd") & "' AND '" & Format(結束3_dtp.Value, "yyyy/MM/dd") & "' " Set_訂單清單() Else kkk1 = "WHERE (訂單控制表.CXL IS NULL or 訂單控制表.CXL = 0)" Set_訂單清單() End If End Sub Private Sub DateTimePicker6_ValueChanged(sender As Object, e As EventArgs) Handles 結束3_dtp.ValueChanged If RLFXF_ch.Checked = True Then kkk6 = " AND 貨款匯入出款明細表.實際離廠日 BETWEEN '" & Format(開始3_dtp.Value, "yyyy/MM/dd") & "' AND '" & Format(結束3_dtp.Value, "yyyy/MM/dd") & "' " Set_訂單清單() Else kkk1 = "WHERE (訂單控制表.CXL IS NULL or 訂單控制表.CXL = 0)" Set_訂單清單() End If End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles 列印成EXCEL_bt.Click MsgBox("下次開發。") '列印_出貨明細表.ShowDialog() End Sub Private Sub 實際離場日修改_bt_Click(sender As Object, e As EventArgs) Handles 實際離場日修改_bt.Click SQL_更改訂單控制表4() : conn.Close() SQL_貨款匯入出款明細表() : conn.Close() PA = "" Set_訂單清單() 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 >= 7 And 主表單_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