Option Strict Off Public Class 人員行政物料領用記錄表 Private ReadOnly ds, ds1 As New DataSet Dim KKK3, KKK4 As String Dim 已超出 As Boolean Private Sub Set_人員清單() 人員_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).Visible = False : 人員_dgv.Columns(1).FillWeight = 150 : 人員_dgv.Columns(2).Visible = False : 人員_dgv.Columns(3).Visible = False 人員_dgv.Columns(4).Visible = False End Sub Private Sub Set_清單() 明細_dgv.DataSource = Nothing : ds.Clear() 明細_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 明細_dgv.ColumnHeadersHeight = 25 明細_dgv.AllowUserToAddRows = False SQL_人員行政物料領用紀錄表() da.Fill(ds) : 明細_dgv.DataSource = ds.Tables(0) : conn.Close() 明細_dgv.Columns(0).FillWeight = 150 : 明細_dgv.Columns(1).FillWeight = 150 : 明細_dgv.Columns(2).FillWeight = 150 : 明細_dgv.Columns(3).FillWeight = 934 明細_dgv.Columns(4).FillWeight = 150 : 明細_dgv.Columns(5).FillWeight = 150 明細_dgv.EditMode = DataGridViewEditMode.EditOnEnter End Sub Private Sub ComboBox1下拉表單資料載入() 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 Set_日期格式轉換() DTP = Format(Today(), "yyyy/MM/dd") 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 ComboBox1下拉表單資料載入() : ComboBox3下拉表單資料載入() Set_人員清單() 查詢月份_cb.Text = Year(Today) : 查詢月份1_cb.SelectedIndex = Month(Today) - 1 KKKJJ3 = "AND (日期 LIKE N'" & KKK3 & "/" & KKK4 & "%') " 明細_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6) 人員_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6) End Sub Private Sub DataGridView2_CellClick(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles 人員_dgv.CellClick If e.RowIndex = -1 Then : Else XXCC = 人員_dgv.Rows(e.RowIndex).Cells("姓名").Value KKKJJ3 = "AND (日期 LIKE N'" & KKK3 & "/" & KKK4 & "%') " Set_清單() 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.Rows(e.RowIndex).Cells("流水號").Value End If End Sub Private Sub Button6_Click(sender As Object, e As EventArgs) Handles 新增_bt.Click If 選擇行政物料_cb.Text = "" Or XXCC = "" Then MsgBox("沒有選擇物料或人員") Else SQL_查詢最後一筆流水號() If dr.Read() Then : 編號 = dr("流水號").ToString : Else : 編號 = "MR00000000" : End If conn.Close() Dim NUM1 As Integer NUM1 = Double.Parse(Strings.Right(編號, 8)) + 1 If NUM1 < 10 Then : 編號 = "MR" & "0000000" & NUM1 ElseIf NUM1 > 9 And NUM1 < 100 Then : 編號 = "MR" & "000000" & NUM1 ElseIf NUM1 > 99 And NUM1 < 1000 Then : 編號 = "MR" & "00000" & NUM1 ElseIf NUM1 > 999 And NUM1 < 10000 Then : 編號 = "MR" & "0000" & NUM1 ElseIf NUM1 > 9999 And NUM1 < 100000 Then : 編號 = "MR" & "000" & NUM1 ElseIf NUM1 > 99999 And NUM1 < 100000 Then : 編號 = "MR" & "00" & NUM1 ElseIf NUM1 > 999999 And NUM1 < 1000000 Then : 編號 = "MR" & "0" & NUM1 ElseIf NUM1 > 9999999 Then : 編號 = "MR" & NUM1 End If Set_日期格式轉換() SQL_新增人員行政物料領用紀錄表() conn.Close() Set_清單() End If End Sub Private Sub Button15_Click(sender As Object, e As EventArgs) Handles 刪除_bt.Click Dim aa As MsgBoxResult aa = MsgBox("確定要刪除該筆資料?", MsgBoxStyle.OkCancel) If aa = MsgBoxResult.Ok Then SQL_刪除人員行政物料領用紀錄表() conn.Close() : dr.Close() MsgBox("刪除完成") : Set_清單() End If End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles 存檔_bt.Click 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 SQL_更改人員行政物料領用紀錄表() conn.Close() : dr.Close() Next : WINPROFIT_ERP_SYS.ToolStripProgressBar1.Value = 0 : 最終數 = 0 MsgBox("存檔完成") End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles 新增物料清單_bt.Click 清單修改.Close() : 行政物料 = True : 清單修改.ShowDialog() : ComboBox3下拉表單資料載入() : 行政物料 = False End Sub Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 查詢月份_cb.SelectedIndexChanged KKK3 = 查詢月份_cb.Text KKKJJ3 = "AND (日期 LIKE N'" & KKK3 & "/" & KKK4 & "%') " End Sub Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 查詢月份1_cb.SelectedIndexChanged KKK4 = 查詢月份1_cb.Text KKKJJ3 = "AND (日期 LIKE N'" & KKK3 & "/" & KKK4 & "%') " 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 = 4 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