Option Strict Off Imports System.IO Public Class 歷史單價紀錄表 Private ReadOnly ds As New DataSet Dim 新流水號 As String Dim 已超出 As Boolean Private Sub Set_清單() 主表單_dgv.DataSource = Nothing : ds.Clear() 主表單_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 主表單_dgv.ColumnHeadersHeight = 25 主表單_dgv.AllowUserToAddRows = False SQL_歷史單價紀錄表1() da.Fill(ds) : 主表單_dgv.DataSource = ds.Tables(0) : conn.Close() 主表單_dgv.Columns(0).Visible = False : 主表單_dgv.Columns(1).Width = 110 : 主表單_dgv.Columns(2).Visible = False : 主表單_dgv.Columns(3).Width = 90 : 主表單_dgv.Columns(4).Width = 90 主表單_dgv.Columns(5).Width = 100 : 主表單_dgv.Columns(6).Width = 180 : 主表單_dgv.Columns(7).Width = 210 : 主表單_dgv.Columns(8).Width = 290 : 主表單_dgv.Columns(9).Width = 160 主表單_dgv.Columns(10).Width = 60 : 主表單_dgv.Columns(11).Width = 60 : 主表單_dgv.Columns(12).Width = 515 : 主表單_dgv.Columns(13).Visible = False 主表單_dgv.Columns(10).DefaultCellStyle.Format = "#,##0.00" : 主表單_dgv.Columns(11).DefaultCellStyle.Format = "#,##0.00" 主表單_dgv.Columns(10).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight : 主表單_dgv.Columns(11).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 主表單_dgv.Columns(10).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight : 主表單_dgv.Columns(11).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight End Sub Private Sub ComboBox1下拉表單資料載入() SQL_客戶簡稱() 客戶簡稱_cb.Items.Clear() : While (dr.Read()) : 客戶簡稱_cb.Items.Add(dr("客戶簡稱")) : End While : conn.Close() End Sub Private Sub ComboBox2下拉表單資料載入() SQL_工廠控制表() 工廠_cb.Items.Clear() : While (dr.Read()) : 工廠_cb.Items.Add(dr("工廠")) : End While : conn.Close() End Sub Private Sub ComboBox3下拉表單資料載入() SQL_顏色清單() 顏色_cb.Items.Clear() : While (dr.Read()) : 顏色_cb.Items.Add(dr("顏色")) : End While : conn.Close() End Sub Private Sub ComboBox4下拉表單資料載入() SQL_型體控制表3() 形體號碼_cb.Items.Clear() : While (dr.Read()) : 形體號碼_cb.Items.Add(dr("型體號碼")) : End While : conn.Close() End Sub Private Sub ComboBox5下拉表單資料載入() SQL_型體控制表4() 形體名稱_cb.Items.Clear() : While (dr.Read()) : 形體名稱_cb.Items.Add(dr("型體名稱")) : End While : conn.Close() End Sub Private Sub Set_日期格式轉換() DTP1 = Format(日期_dtp.Value, "yyyy/MM/dd") : DTP2 = Format(日期2_dtp.Value, "yyyy/MM/dd") 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 : 鞋圖編號_tb.Enabled = False : 新增存檔_bt.Enabled = False : 文字提醒_lb.Visible = False ComboBox1下拉表單資料載入() : ComboBox2下拉表單資料載入() : ComboBox3下拉表單資料載入() Set_清單() If CC(6) = False Then 一般新增_bt.Enabled = False : 複製新增_bt.Enabled = False : 修改_bt.Enabled = False End If If CC(7) = False Then 刪除_bt.Enabled = False End If If CC(8) = False Then 新增工廠清單_bt.Enabled = False : 新增顏色清單_bt.Enabled = False End If End Sub Private Sub 歷史單價紀錄表_Unload(sender As Object, e As EventArgs) Handles MyBase.Closing If 新增存檔_bt.Enabled = True Then SQL_刪除歷史單價紀錄表() : conn.Close() End If End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick If 文字提醒_lb.Visible = True Then : 文字提醒_lb.Visible = False : Else : 文字提醒_lb.Visible = True : End If End Sub Private Sub DataGridView1_CellClick(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles 主表單_dgv.CellClick If e.RowIndex = -1 Then : Else If 新增存檔_bt.Enabled = False Then 資料編碼_tb.Text = 主表單_dgv(0, e.RowIndex).Value.ToString : 客戶簡稱_cb.Text = 主表單_dgv(1, e.RowIndex).Value.ToString : 客戶備註_tb.Text = 主表單_dgv(2, e.RowIndex).Value.ToString 日期_dtp.Text = 主表單_dgv(3, e.RowIndex).Value.ToString : 日期2_dtp.Text = 主表單_dgv(4, e.RowIndex).Value.ToString : 工廠_cb.Text = 主表單_dgv(5, e.RowIndex).Value.ToString 形體號碼_cb.Text = 主表單_dgv(6, e.RowIndex).Value.ToString : 形體名稱_cb.Text = 主表單_dgv(7, e.RowIndex).Value.ToString : 鞋面_tb.Text = 主表單_dgv(8, e.RowIndex).Value.ToString 顏色_cb.Text = 主表單_dgv(9, e.RowIndex).Value.ToString : 工廠價_tb.Text = 主表單_dgv(10, e.RowIndex).Value.ToString : 客戶價_tb.Text = 主表單_dgv(11, e.RowIndex).Value.ToString 備註_tb.Text = 主表單_dgv(12, e.RowIndex).Value.ToString : 鞋圖編號_tb.Text = 主表單_dgv(13, e.RowIndex).Value.ToString 工廠價_tb.Text = Format(Val(工廠價_tb.Text), "#,##0.00") : 客戶價_tb.Text = Format(Val(客戶價_tb.Text), "#,##0.00") PictureBox1.Image = Nothing PA = 主表單_dgv(1, e.RowIndex).Value.ToString : PA1 = 主表單_dgv(6, e.RowIndex).Value.ToString PA2 = 主表單_dgv(7, e.RowIndex).Value.ToString : PA3 = 主表單_dgv(9, e.RowIndex).Value.ToString SQL_鞋型圖片資料庫5() If dr.Read() Then PictureBox1.Image = Nothing SQL_鞋型圖片資料庫5() While dr.Read() = True Dim bytes As Byte() = New Byte(-1) {} bytes = DirectCast(dr.Item("圖片"), Byte()) Dim oStream As New MemoryStream(bytes) PictureBox1.Image = Image.FromStream(oStream) End While conn.Close() Else PA4 = 主表單_dgv(1, e.RowIndex).Value.ToString : PA5 = 主表單_dgv(6, e.RowIndex).Value.ToString PA6 = 主表單_dgv(7, e.RowIndex).Value.ToString 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 = Image.FromStream(oStream) End While conn.Close() Else conn.Close() End If End If : PictureBox1.SizeMode = 4 End If End If End Sub Private Sub DataGridView1_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 Button9_Click(sender As Object, e As EventArgs) Handles 搜尋_bt.Click PA = InputBox("請輸入要查詢的關鍵字") : Set_清單() : PA = "" End Sub Private Sub Button32_Click(sender As Object, e As EventArgs) Handles 返回_bt.Click PA = "" : Set_清單() End Sub Private Sub 新增準備1() Dim NUM1 As Integer SQL_最後一筆流水號3() If dr.Read() Then : 新流水號 = dr("流水號") : End If : conn.Close() NUM1 = Double.Parse(Strings.Right(新流水號, 6)) + 1 If NUM1 < 10 Then : 新流水號 = "PR" & "00000" & NUM1 ElseIf NUM1 > 9 And NUM1 < 100 Then : 新流水號 = "PR" & "0000" & NUM1 ElseIf NUM1 > 99 And NUM1 < 1000 Then : 新流水號 = "PR" & "000" & NUM1 ElseIf NUM1 > 999 And NUM1 < 10000 Then : 新流水號 = "PR" & "00" & NUM1 ElseIf NUM1 > 9999 And NUM1 < 100000 Then : 新流水號 = "PR" & "0" & NUM1 ElseIf NUM1 > 99999 Then : 新流水號 = "PR" & NUM1 End If 資料編碼_tb.Text = 新流水號 End Sub Private Sub 新增準備2() SQL_新增歷史單價紀錄表() : conn.Close() 新增存檔_bt.Enabled = True : 一般新增_bt.Enabled = False : 複製新增_bt.Enabled = False : 修改_bt.Enabled = False MsgBox("資料新增準備完成") End Sub Private Sub Button29_Click(sender As Object, e As EventArgs) Handles 一般新增_bt.Click Timer1.Enabled = True 新增準備1() ComboBox1下拉表單資料載入() : ComboBox2下拉表單資料載入() : ComboBox3下拉表單資料載入() 日期_dtp.Value = Today() : 日期2_dtp.Value = Today() 客戶備註_tb.Text = "" : 形體號碼_cb.Text = "" : 形體名稱_cb.Text = "" : 鞋面_tb.Text = "" : 工廠價_tb.Text = "0.00" : 客戶價_tb.Text = "0.00" : 備註_tb.Text = "" : 鞋圖編號_tb.Text = "" Set_日期格式轉換() 新增準備2() End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles 複製新增_bt.Click Timer1.Enabled = True If 形體號碼_cb.Text = "" Or 形體名稱_cb.Text = "" Or 鞋面_tb.Text = "" Or 客戶簡稱_cb.Text = "" Or 工廠_cb.Text = "" Or 顏色_cb.Text = "" Then MsgBox("複製新增方式需要先選擇一筆被複製的舊資料") Else 新增準備1() : Set_日期格式轉換() : 新增準備2() End If End Sub Private Sub 修改1() If 形體號碼_cb.Text = "" Or 形體名稱_cb.Text = "" Or 鞋面_tb.Text = "" Or 客戶簡稱_cb.Text = "" Or 工廠_cb.Text = "" Or 顏色_cb.Text = "" Then MsgBox("紅色字體的資料欄位為必填項,不可空白") Else Set_日期格式轉換() SQL_更改歷史單價紀錄表() : conn.Close() 新增存檔_bt.Enabled = False : 一般新增_bt.Enabled = True : 複製新增_bt.Enabled = True : 修改_bt.Enabled = True MsgBox("存檔完成") : Set_清單() End If Timer1.Enabled = False : 文字提醒_lb.Visible = False End Sub Private Sub Button11_Click(sender As Object, e As EventArgs) Handles 新增存檔_bt.Click 修改1() End Sub Private Sub Button12_Click(sender As Object, e As EventArgs) Handles 修改_bt.Click 修改1() End Sub Private Sub Button10_Click(sender As Object, e As EventArgs) Handles 刪除_bt.Click Dim aa As MsgBoxResult aa = MsgBox("確定要刪除該筆資料?", MsgBoxStyle.OkCancel) If aa = MsgBoxResult.Ok Then SQL_刪除歷史單價紀錄表1() : conn.Close() MsgBox("刪除完成") : Set_清單() End If End Sub Private Sub Button28_Click(sender As Object, e As EventArgs) Handles 列印篩選_bt.Click MsgBox("等待開發") End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles 新增工廠清單_bt.Click 清單修改.Close() : 工廠清單修改 = True : 清單修改.ShowDialog() : ComboBox2下拉表單資料載入() : 工廠清單修改 = False End Sub Private Sub Button4_Click(sender As Object, e As EventArgs) Handles 新增顏色清單_bt.Click 清單修改.Close() : 顏色清單修改 = True : 清單修改.ShowDialog() : ComboBox3下拉表單資料載入() : 顏色清單修改 = False End Sub Private Sub ComboBox4_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 形體號碼_cb.SelectedIndexChanged ComboBox5下拉表單資料載入() End Sub Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 客戶簡稱_cb.SelectedIndexChanged ComboBox4下拉表單資料載入() 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 >= 10 And 主表單_dgv.SelectedCells(0).ColumnIndex <= 11 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.00") WINPROFIT_ERP_SYS.合計_TSSL.Text = "合計 : " & Strings.Format(x, "#,##0.00") Else 加總_tb.Text = Strings.Format(0, "#,##0.00") WINPROFIT_ERP_SYS.合計_TSSL.Text = "合計 : " & Strings.Format(0, "#,##0.00") End If Else 已超出 = True 加總_tb.Text = Strings.Format(0, "#,##0.00") WINPROFIT_ERP_SYS.合計_TSSL.Text = "合計 : " & Strings.Format(0, "#,##0.00") End If End If End Sub End Class