Option Strict Off Public Class 零用金支付申請 Private ReadOnly ds, ds1, ds2, ds3, ds4 As New DataSet Dim DTP1 As String Dim 已超出 As Boolean Dim NUM1 As Integer Private Sub Set_財務單清單() 明細_dgv.DataSource = Nothing : ds.Clear() 明細_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 明細_dgv.ColumnHeadersHeight = 25 明細_dgv.AllowUserToAddRows = False 明細_dgv.RowTemplate.Height = 35 PA1 = 零用金單號_tb.Text : SQL_財務帳清單() da.Fill(ds) : 明細_dgv.DataSource = ds.Tables(0) : conn.Close() 明細_dgv.Columns(0).Visible = False : 明細_dgv.Columns(1).Width = 80 : 明細_dgv.Columns(2).Width = 342 : 明細_dgv.Columns(3).Width = 140 : 明細_dgv.Columns(4).Width = 350 明細_dgv.Columns(3).DefaultCellStyle.Format = "#,##0.00" 明細_dgv.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight : 明細_dgv.Columns(3).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight 明細_dgv.EditMode = DataGridViewEditMode.EditOnEnter 總金額_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 PA = "一級未審核" : SQL_財務單據() da.Fill(ds1) : 一級未審核_dgv.DataSource = ds1.Tables(0) : conn.Close() 一級未審核_dgv.Columns(0).Width = 120 : 一級未審核_dgv.Columns(1).Width = 114 : 一級未審核_dgv.Columns(2).Width = 114 : 一級未審核_dgv.Columns(3).Width = 115 一級未審核_dgv.Columns(4).Width = 115 : 一級未審核_dgv.Columns(5).Width = 115 : 一級未審核_dgv.Columns(6).Width = 115 : 一級未審核_dgv.Columns(7).Width = 115 一級未審核_dgv.Columns(8).Visible = False : 一級未審核_dgv.Columns(9).Visible = False End Sub Private Sub Set_清單2() 一級作廢_dgv.DataSource = Nothing : ds2.Clear() 一級作廢_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 一級作廢_dgv.ColumnHeadersHeight = 25 一級作廢_dgv.AllowUserToAddRows = False PA = "一級作廢" : SQL_財務單據() da.Fill(ds2) : 一級作廢_dgv.DataSource = ds2.Tables(0) : conn.Close() 一級作廢_dgv.Columns(0).Width = 120 : 一級作廢_dgv.Columns(1).Width = 114 : 一級作廢_dgv.Columns(2).Width = 114 : 一級作廢_dgv.Columns(3).Width = 115 一級作廢_dgv.Columns(4).Width = 115 : 一級作廢_dgv.Columns(5).Width = 115 : 一級作廢_dgv.Columns(6).Width = 115 : 一級作廢_dgv.Columns(7).Width = 115 一級作廢_dgv.Columns(8).Visible = False : 一級作廢_dgv.Columns(9).Visible = False End Sub Private Sub Set_清單3() 二級未核准_dgv.DataSource = Nothing : ds3.Clear() 二級未核准_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 二級未核准_dgv.ColumnHeadersHeight = 25 二級未核准_dgv.AllowUserToAddRows = False PA = "二級未核准" : SQL_財務單據() da.Fill(ds3) : 二級未核准_dgv.DataSource = ds3.Tables(0) : conn.Close() 二級未核准_dgv.Columns(0).Width = 120 : 二級未核准_dgv.Columns(1).Width = 114 : 二級未核准_dgv.Columns(2).Width = 114 : 二級未核准_dgv.Columns(3).Width = 115 二級未核准_dgv.Columns(4).Width = 115 : 二級未核准_dgv.Columns(5).Width = 115 : 二級未核准_dgv.Columns(6).Width = 115 : 二級未核准_dgv.Columns(7).Width = 115 二級未核准_dgv.Columns(8).Visible = False : 二級未核准_dgv.Columns(9).Visible = False End Sub Private Sub Set_清單4() 二級作廢_dgv.DataSource = Nothing : ds4.Clear() 二級作廢_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 二級作廢_dgv.ColumnHeadersHeight = 25 二級作廢_dgv.AllowUserToAddRows = False PA = "二級作廢" : SQL_財務單據() da.Fill(ds4) : 二級作廢_dgv.DataSource = ds4.Tables(0) : conn.Close() 二級作廢_dgv.Columns(0).Width = 120 : 二級作廢_dgv.Columns(1).Width = 114 : 二級作廢_dgv.Columns(2).Width = 114 : 二級作廢_dgv.Columns(3).Width = 115 二級作廢_dgv.Columns(4).Width = 115 : 二級作廢_dgv.Columns(5).Width = 115 : 二級作廢_dgv.Columns(6).Width = 115 : 二級作廢_dgv.Columns(7).Width = 115 二級作廢_dgv.Columns(8).Visible = False : 二級作廢_dgv.Columns(9).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 ComboBox1下拉表單資料載入() SQL_帳本下拉清單() 帳本名稱_cb.Items.Clear() : 帳本編號_cb.Items.Clear() : While (dr.Read()) : 帳本名稱_cb.Items.Add(dr("帳本名稱")) : 帳本編號_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 申請完成_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 : 選擇_tb.Enabled = False : 帳本編號_cb.Visible = False ComboBox1下拉表單資料載入() : 帳本名稱_cb.SelectedIndex = 0 : PA19 = 帳本編號_cb.Text Set_清單1() : Set_清單2() : Set_清單3() : Set_清單4() End Sub Private Sub 零用金支付申請_Unload(sender As Object, e As EventArgs) Handles MyBase.Closing If 申請完成_bt.Enabled = True Then PA = 零用金單號_tb.Text : 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 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 : 申請人_tb.Text = 一級未審核_dgv(2, e.RowIndex).Value.ToString 修改_bt.Enabled = True : 刪除1_bt.Enabled = True : Set_財務單清單() End If End Sub Private Sub DataGridView3_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 : 申請人_tb.Text = 一級作廢_dgv(2, e.RowIndex).Value.ToString 修改_bt.Enabled = False : 刪除1_bt.Enabled = False : 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 : 申請人_tb.Text = 二級未核准_dgv(2, e.RowIndex).Value.ToString 修改_bt.Enabled = False : 刪除1_bt.Enabled = False : Set_財務單清單() End If End Sub Private Sub DataGridView5_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 : 申請人_tb.Text = 二級作廢_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 = "PC-" & DTP1 & "-00" & NUM1 ElseIf NUM1 > 9 And NUM1 < 100 Then : 零用金單號_tb.Text = "PC-" & DTP1 & "-0" & NUM1 ElseIf NUM1 > 99 Then : 零用金單號_tb.Text = "PC-" & DTP1 & "-" & NUM1 : End If PA = 零用金單號_tb.Text : SQL_零用金支付表最後一筆資料() If dr.Read() Then : Else : i = 999 : conn.Close() : End If : conn.Close() Next SQL_新增零用金支付表1() 申請部門_tb.Text = 登入人部門 : 申請人_tb.Text = gUserName 明細_dgv.DataSource = Nothing : ds.Clear() conn.Close() End Sub Private Sub 存檔() For i As Integer = 0 To 明細_dgv.Rows.Count - 1 資料數 = 明細_dgv.Rows.Count : MyModule1.進度條() PA2 = 明細_dgv.Rows(i).Cells("用途").Value : PA3 = 明細_dgv.Rows(i).Cells("金額").Value PA4 = 明細_dgv.Rows(i).Cells("備註").Value : PA5 = 明細_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_最後一筆項次1() 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_新增零用金支付明細1() : conn.Close() 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 PA5 = 明細_dgv.Rows(i).Cells("項次").Value SQL_修改零用金支付明細1() : conn.Close() Next Set_財務單清單() End If 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 = "" : 選擇_tb.Text = "" 明細_dgv.DataSource = Nothing : ds.Clear() MsgBox("申請完成,請通知主管審核。") Set_清單1() : Set_清單2() : Set_清單3() : Set_清單4() 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 For i As Integer = 0 To 明細_dgv.Rows.Count - 1 資料數 = 明細_dgv.Rows.Count : MyModule1.進度條() PA2 = 明細_dgv.Rows(i).Cells("用途").Value : PA3 = 明細_dgv.Rows(i).Cells("金額").Value PA4 = 明細_dgv.Rows(i).Cells("備註").Value : PA5 = 明細_dgv.Rows(i).Cells("項次").Value SQL_修改零用金支付明細() : conn.Close() Next : WINPROFIT_ERP_SYS.ToolStripProgressBar1.Value = 0 : 最終數 = 0 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 = "" : 選擇_tb.Text = "" 明細_dgv.DataSource = Nothing : ds.Clear() Set_清單1() : Set_清單2() : Set_清單3() : Set_清單4() End If End Sub Private Sub 帳本名稱_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 帳本名稱_cb.SelectedIndexChanged 帳本編號_cb.SelectedIndex = 帳本名稱_cb.SelectedIndex : PA19 = 帳本編號_cb.Text : Set_清單1() : Set_清單2() : Set_清單3() : Set_清單4() 零用金單號_tb.Text = "" : 申請部門_tb.Text = "" : 申請人_tb.Text = "" : Set_財務單清單() End Sub Private Sub 帳本編號_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 帳本編號_cb.SelectedIndexChanged 帳本名稱_cb.SelectedIndex = 帳本編號_cb.SelectedIndex : PA19 = 帳本編號_cb.Text : Set_清單1() : Set_清單2() : Set_清單3() : Set_清單4() 零用金單號_tb.Text = "" : 申請部門_tb.Text = "" : 申請人_tb.Text = "" : 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 = 3 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