Option Strict Off Imports System.IO Public Class 零用金支付核准 Private ReadOnly ds, ds2, ds3, ds4 As New DataSet Private ReadOnly QQW(11) As String Dim II 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 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_清單3() 二級未核准_dgv.DataSource = Nothing : ds3.Clear() 二級未核准_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 二級未核准_dgv.ColumnHeadersHeight = 25 二級未核准_dgv.AllowUserToAddRows = False PA19 = "%%" : PA = "二級未核准" : SQL_財務單據() da.Fill(ds3) : 二級未核准_dgv.DataSource = ds3.Tables(0) : conn.Close() 二級未核准_dgv.Columns(0).FillWeight = 120 : 二級未核准_dgv.Columns(1).FillWeight = 114 : 二級未核准_dgv.Columns(2).FillWeight = 114 : 二級未核准_dgv.Columns(3).FillWeight = 115 二級未核准_dgv.Columns(4).FillWeight = 115 : 二級未核准_dgv.Columns(5).FillWeight = 115 : 二級未核准_dgv.Columns(6).FillWeight = 115 : 二級未核准_dgv.Columns(7).FillWeight = 115 二級未核准_dgv.Columns(8).Visible = False : 二級未核准_dgv.Columns(9).FillWeight = 90 End Sub Private Sub Set_清單4() 二級作廢_dgv.DataSource = Nothing : ds4.Clear() 二級作廢_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 二級作廢_dgv.ColumnHeadersHeight = 25 二級作廢_dgv.AllowUserToAddRows = False PA19 = "%%" : PA = "二級作廢" : SQL_財務單據() da.Fill(ds4) : 二級作廢_dgv.DataSource = ds4.Tables(0) : conn.Close() 二級作廢_dgv.Columns(0).FillWeight = 120 : 二級作廢_dgv.Columns(1).FillWeight = 114 : 二級作廢_dgv.Columns(2).FillWeight = 114 : 二級作廢_dgv.Columns(3).FillWeight = 115 二級作廢_dgv.Columns(4).FillWeight = 115 : 二級作廢_dgv.Columns(5).FillWeight = 115 : 二級作廢_dgv.Columns(6).FillWeight = 115 : 二級作廢_dgv.Columns(7).FillWeight = 115 二級作廢_dgv.Columns(8).Visible = False : 二級作廢_dgv.Columns(9).FillWeight = 90 End Sub Private Sub Set_清單() 簽名檔_dgv.DataSource = Nothing : ds2.Clear() 簽名檔_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 簽名檔_dgv.ColumnHeadersHeight = 25 簽名檔_dgv.AllowUserToAddRows = False SQL_簽名檔管理1() da.Fill(ds2) : 簽名檔_dgv.DataSource = ds2.Tables(0) : conn.Close() 簽名檔_dgv.Columns(0).Width = 110 : 簽名檔_dgv.Columns(1).Width = 63 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 Set_清單() : Set_清單3() : Set_清單4() End Sub Private Sub 轉換() If QQW(II) = "1" Then : QQW(II) = "A" : ElseIf QQW(II) = "2" Then : QQW(II) = "B" : ElseIf QQW(II) = "3" Then : QQW(II) = "C" : ElseIf QQW(II) = "4" Then : QQW(II) = "D" ElseIf QQW(II) = "5" Then : QQW(II) = "E" : ElseIf QQW(II) = "6" Then : QQW(II) = "F" : ElseIf QQW(II) = "7" Then : QQW(II) = "G" : ElseIf QQW(II) = "8" Then : QQW(II) = "H" ElseIf QQW(II) = "9" Then : QQW(II) = "I" : ElseIf QQW(II) = "0" Then : QQW(II) = "J" End If End Sub Public Sub Delay(ByRef Interval As Double) 'Interval单位为毫秒 Dim time As DateTime = DateTime.Now : Dim Span As Double = Interval * 1234 : While ((DateTime.Now.Ticks - time.Ticks) < Span) : Application.DoEvents() : End While 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 SQL_簽名檔管理2() 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() PictureBox1.SizeMode = 4 For QAZ = 0 To 999 QQW(0) = Strings.Right(簽名檔_dgv(0, e.RowIndex).Value.ToString, 2) : QQW(1) = Strings.Right(Year(Today), 2) : QQW(2) = Strings.Left(Year(Today), 2) : QQW(3) = Month(Today) + 9 QQW(4) = Strings.Right(QQW(0), 1) : QQW(5) = Strings.Left(QQW(0), 1) : QQW(6) = Strings.Right(QQW(1), 1) : QQW(7) = Strings.Left(QQW(1), 1) : QQW(8) = Strings.Right(QQW(2), 1) QQW(9) = Strings.Left(QQW(2), 1) : QQW(10) = Strings.Right(QQW(3), 1) : QQW(11) = Strings.Left(QQW(3), 1) For RT = 4 To 11 Delay(3) Dim NUM1 As Integer : Dim ran = New Random(DateTime.Now.Millisecond) : NUM1 = ran.Next(1, 4096) For I = 0 To 4096 : If NUM1 > 9 Then : NUM1 -= 9 : ElseIf NUM1 < 9 Then : I = 4096 : End If : Next If NUM1 = 1 Then : II = RT : 轉換() : ElseIf NUM1 = 2 Then : II = RT : 轉換() : ElseIf NUM1 = 3 Then : ElseIf NUM1 = 4 Then : II = RT : 轉換() : ElseIf NUM1 = 5 Then ElseIf NUM1 = 6 Then : II = RT : 轉換() : ElseIf NUM1 = 7 Then : ElseIf NUM1 = 8 Then : II = RT : 轉換() : ElseIf NUM1 = 9 Then : II = RT : 轉換() : End If Next Dim NUM2 As Integer = 0 : Dim ran1 = New Random(DateTime.Now.Millisecond) : NUM2 = ran1.Next(1, 4096) For I = 0 To 4096 : If NUM2 > 99 Then : NUM2 -= 49 : ElseIf NUM2 < 99 Then : I = 4096 : End If : Next 驗證碼_tb.Text = QQW(11) & "2" & QQW(9) & "7" & QQW(7) & "0" & QQW(5) & QQW(4) & "1" & QQW(6) & "3" & QQW(8) & "9" & QQW(10) & NUM2 SQL_零用金支付表() If dr.Read() = True Then : Else : QAZ = 999 : End If : conn.Close() Next 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 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 Set_財務單清單() End If End Sub Private Sub Set_日期格式轉換() DTP = Format(Today(), "yyyy/MM/dd") & "-" & Format(TimeOfDay(), "hh:mm:ss") : DTP2 = Format(Today(), "yyyy/MM/dd") End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles 核准_bt.Click Set_日期格式轉換() If 零用金單號_tb.Text = "" Then MsgBox("沒有選擇零用金支付單") Else If 驗證碼_tb.Text = "" Then MsgBox("沒有選擇簽名檔") Else SQL_修改零用金支付表() : conn.Close() MsgBox("單據 " & 零用金單號_tb.Text & " 核准完成") Set_清單3() : Set_清單4() 零用金單號_tb.Text = "" : 申請部門_tb.Text = "" : 申請人_tb.Text = "" : 驗證碼_tb.Text = "" : 圖片編碼_tb.Text = "" 明細_dgv.DataSource = Nothing : ds.Clear() End If End If End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles 作廢_bt.Click Set_日期格式轉換() If 零用金單號_tb.Text = "" Then MsgBox("沒有選擇零用金支付單") Else Dim aa As MsgBoxResult aa = MsgBox("確定要作廢該筆資料?", MsgBoxStyle.OkCancel) If aa = MsgBoxResult.Ok Then SQL_修改零用金支付表2() : conn.Close() MsgBox("單據 " & 零用金單號_tb.Text & " 已作廢") Set_清單3() : Set_清單4() 零用金單號_tb.Text = "" : 申請部門_tb.Text = "" : 申請人_tb.Text = "" : 驗證碼_tb.Text = "" : 圖片編碼_tb.Text = "" 明細_dgv.DataSource = Nothing : ds.Clear() End If 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 = 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