Option Strict Off Public Class 一般物料請購單申請 Private ReadOnly ds, ds1, ds2, ds3, ds4 As New DataSet Dim NUM1 As Integer Dim 已超出 As Boolean Private Sub Set_使用者清單() 明細_dgv.DataSource = Nothing : ds.Clear() 明細_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 明細_dgv.ColumnHeadersHeight = 25 明細_dgv.AllowUserToAddRows = False 明細_dgv.RowTemplate.Height = 35 SQL_一般物料請購單明細表() da.Fill(ds) : 明細_dgv.DataSource = ds.Tables(0) : conn.Close() 明細_dgv.Columns(0).Visible = False : 明細_dgv.Columns(1).FillWeight = 80 : 明細_dgv.Columns(2).FillWeight = 200 : 明細_dgv.Columns(3).FillWeight = 200 明細_dgv.Columns(5).FillWeight = 80 : 明細_dgv.Columns(6).FillWeight = 80 : 明細_dgv.Columns(7).FillWeight = 80 : 明細_dgv.Columns(8).FillWeight = 305 明細_dgv.Columns(4).FillWeight = 200 明細_dgv.Columns(5).DefaultCellStyle.Format = "#,##0.00" : 明細_dgv.Columns(6).DefaultCellStyle.Format = "#,##0.00" : 明細_dgv.Columns(7).DefaultCellStyle.Format = "#,##0.00" 明細_dgv.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight : 明細_dgv.Columns(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 明細_dgv.Columns(7).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 明細_dgv.Columns(5).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight : 明細_dgv.Columns(6).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight 明細_dgv.Columns(7).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight 明細_dgv.EditMode = DataGridViewEditMode.EditOnEnter 明細_dgv.Columns("項次").ReadOnly = True : 明細_dgv.Columns("金額").ReadOnly = True 總金額_tb.Text = "0.00" For i As Integer = 0 To 明細_dgv.Rows.Count - 1 總金額_tb.Text = Val(總金額_tb.Text) + 明細_dgv.Rows(i).Cells("金額").Value Next i 總金額_tb.Text = Format(Val(總金額_tb.Text), "#,##0.00") End Sub Private Sub Set_清單1() 未審核_dgv.DataSource = Nothing : ds1.Clear() 未審核_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 未審核_dgv.ColumnHeadersHeight = 25 未審核_dgv.AllowUserToAddRows = False SQL_未審核清單() da.Fill(ds1) : 未審核_dgv.DataSource = ds1.Tables(0) : conn.Close() 未審核_dgv.Columns(0).FillWeight = 185 : 未審核_dgv.Columns(1).FillWeight = 115 : 未審核_dgv.Columns(2).FillWeight = 115 未審核_dgv.Columns(3).Visible = False : 未審核_dgv.Columns(4).Visible = False End Sub Private Sub Set_清單3() 未核准_dgv.DataSource = Nothing : ds3.Clear() 未核准_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 未核准_dgv.ColumnHeadersHeight = 25 未核准_dgv.AllowUserToAddRows = False SQL_未核准清單() da.Fill(ds3) : 未核准_dgv.DataSource = ds3.Tables(0) : conn.Close() 未核准_dgv.Columns(0).FillWeight = 185 : 未核准_dgv.Columns(1).FillWeight = 115 : 未核准_dgv.Columns(2).FillWeight = 115 未核准_dgv.Columns(3).Visible = False : 未核准_dgv.Columns(4).Visible = False End Sub Private Sub Set_日期格式轉換() DTP = Format(Today(), "yyyy/MM/dd") & "-" & Format(TimeOfDay(), "hh:mm:ss") : DTP1 = Format(Today(), "yyyyMMdd") End Sub Private Sub 一般物料請購單申請_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.MdiParent = WINPROFIT_ERP_SYS : Me.WindowState = 2 : Me.AutoScroll = True 申請完成_bt.Enabled = False : 新增_bt.Enabled = False : 刪除_bt.Enabled = False : 修改_bt.Enabled = False : 修改存檔_bt.Enabled = False : 刪除1_bt.Enabled = False 一般物料請購單號_tb.Enabled = False : 申請人_tb.Enabled = False : 項次_tb.Enabled = False Set_清單1() : Set_清單3() 明細_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6) 未審核_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6) 未核准_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6) End Sub Private Sub 一般物料請購單申請_Unload(sender As Object, e As EventArgs) Handles MyBase.Closing If 申請完成_bt.Enabled = True Then SQL_刪除尚未存檔請購單控制表() 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 項次_tb.Text = 明細_dgv(1, e.RowIndex).Value.ToString End If End Sub Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles 明細_dgv.CellEndEdit For i As Integer = 0 To 明細_dgv.Rows.Count - 1 明細_dgv.Rows(i).Cells("金額").Value = Val(明細_dgv.Rows(i).Cells("數量").Value) * Val(明細_dgv.Rows(i).Cells("單價").Value) Next i End Sub Private Sub DataGridView2_CellClick(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles 未審核_dgv.CellClick If e.RowIndex = -1 Then : Else 一般物料請購單號_tb.Text = 未審核_dgv(0, e.RowIndex).Value.ToString : 申請人_tb.Text = 未審核_dgv(1, e.RowIndex).Value.ToString 申請日期_dtp.Value = 未審核_dgv(2, e.RowIndex).Value.ToString 修改_bt.Enabled = True : 刪除1_bt.Enabled = True : Set_使用者清單() End If End Sub Private Sub DataGridView4_CellClick(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles 未核准_dgv.CellClick If e.RowIndex = -1 Then : Else 一般物料請購單號_tb.Text = 未核准_dgv(0, e.RowIndex).Value.ToString : 申請人_tb.Text = 未核准_dgv(1, e.RowIndex).Value.ToString 申請日期_dtp.Value = 未核准_dgv(2, e.RowIndex).Value.ToString 修改_bt.Enabled = False : 刪除1_bt.Enabled = False : Set_使用者清單() End If End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles 開立一般物料請購單_bt.Click Timer1.Enabled = True 開立一般物料請購單_bt.Enabled = False : 申請完成_bt.Enabled = True : 新增_bt.Enabled = True : 刪除_bt.Enabled = True Set_日期格式轉換() : Dim NUM1 As Integer For i As Integer = 1 To 999 NUM1 = 0 + i If NUM1 < 10 Then : 一般物料請購單號_tb.Text = "RE-" & DTP1 & "-00" & NUM1 ElseIf NUM1 > 9 And NUM1 < 100 Then : 一般物料請購單號_tb.Text = "RE-" & DTP1 & "-0" & NUM1 ElseIf NUM1 > 99 Then : 一般物料請購單號_tb.Text = "RE-" & DTP1 & "-" & NUM1 End If SQL_查詢請購單號() If dr.Read() Then : Else : i = 999 : conn.Close() : End If : conn.Close() Next SQL_新增一般物料請購單控制表() 申請人_tb.Text = gUserName 明細_dgv.DataSource = Nothing : ds.Clear() conn.Close() End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles 申請完成_bt.Click Timer1.Enabled = False : 資料尚未存檔_lb.Visible = False 開立一般物料請購單_bt.Enabled = True : 申請完成_bt.Enabled = False : 新增_bt.Enabled = False : 刪除_bt.Enabled = False 存檔() 一般物料請購單號_tb.Text = "" : 申請人_tb.Text = "" : 項次_tb.Text = "" 明細_dgv.DataSource = Nothing : ds.Clear() MsgBox("申請完成,請通知總經理審核。") Set_清單1() : Set_清單3() End Sub Private Sub 存檔() For i As Integer = 0 To 明細_dgv.Rows.Count - 1 資料數 = 明細_dgv.Rows.Count : MyModule1.進度條() PA = 明細_dgv.Rows(i).Cells("品名").Value : PA1 = 明細_dgv.Rows(i).Cells("規格").Value PA2 = 明細_dgv.Rows(i).Cells("備註").Value : PA3 = 明細_dgv.Rows(i).Cells("數量").Value PA4 = 明細_dgv.Rows(i).Cells("單價").Value : PA5 = 明細_dgv.Rows(i).Cells("用途").Value PA6 = 明細_dgv.Rows(i).Cells("項次").Value SQL_修改一般物料請購單明細表() : conn.Close() Next : WINPROFIT_ERP_SYS.ToolStripProgressBar1.Value = 0 : 最終數 = 0 End Sub Private Sub Button6_Click(sender As Object, e As EventArgs) Handles 新增_bt.Click 存檔() SQL_查詢最後一筆項次() If dr.Read() Then : 新項次 = dr("項次") : Else : 新項次 = "00" : End If : conn.Close() NUM1 = Double.Parse(新項次) + 1 If NUM1 < 10 Then : 新項次 = "0" & NUM1 ElseIf NUM1 > 9 And NUM1 < 100 Then : 新項次 = NUM1 End If SQL_新增一般物料請購單明細表() : Set_使用者清單() End Sub Private Sub Button15_Click(sender As Object, e As EventArgs) Handles 刪除_bt.Click If 項次_tb.Text = "" Then MsgBox("未選擇需要刪除的資料") Else 存檔() SQL_刪除一般物料請購單明細表() : conn.Close() Set_使用者清單() Dim NUM1 As Integer = 0 For i As Integer = 0 To 明細_dgv.Rows.Count - 1 NUM1 += 1 : If NUM1 < 10 Then : 新項次 = "0" & NUM1 : ElseIf NUM1 > 9 And NUM1 < 100 Then : 新項次 = NUM1 : End If PA9 = 明細_dgv.Rows(i).Cells("項次").Value SQL_修改項次() : conn.Close() Next Set_使用者清單() End If End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles 修改_bt.Click 修改_bt.Enabled = False : 修改存檔_bt.Enabled = True : 新增_bt.Enabled = True : 刪除_bt.Enabled = True End Sub Private Sub Button4_Click(sender As Object, e As EventArgs) Handles 修改存檔_bt.Click 修改_bt.Enabled = True : 修改存檔_bt.Enabled = False : 新增_bt.Enabled = False : 刪除_bt.Enabled = False 存檔() End Sub Private Sub Button5_Click(sender As Object, e As EventArgs) Handles 刪除1_bt.Click Dim aa As MsgBoxResult aa = MsgBox("確定要刪除該筆資料?", MsgBoxStyle.OkCancel) If aa = MsgBoxResult.Ok Then SQL_刪除一般物料請購單控制表() conn.Close() SQL_刪除一般物料請購單明細表1() conn.Close() 一般物料請購單號_tb.Text = "" : 申請人_tb.Text = "" : 項次_tb.Text = "" 明細_dgv.DataSource = Nothing : ds.Clear() Set_清單1() : Set_清單3() End If 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 = 5 Or 明細_dgv.SelectedCells(0).ColumnIndex = 7 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 '將計算好的資料放置到指定的控件中 WINPROFIT_ERP_SYS.合計_TSSL.Text = "合計 : " & Strings.Format(x, "#,##0") Else WINPROFIT_ERP_SYS.合計_TSSL.Text = "合計 : " & Strings.Format(0, "#,##0") End If Else 已超出 = True WINPROFIT_ERP_SYS.合計_TSSL.Text = "合計 : " & Strings.Format(0, "#,##0") End If End If End Sub End Class