我正在将 DataGridView 数据保存到运行正常的 SQL 数据库中。我想重新保存网格,但首先想从数据库中删除相同数量 PO 的现有行。为此,我在插入数据库之前使用了相同采购订单号的删除命令。
现在,如果插入过程中万一出现错误,它会删除现有行并显示错误。
我希望如果出现错误,删除程序将无法运行。如何检查这个?
Private Sub SaveData()
Try
DeleteData()
Dim i As Integer
Dim answer As Integer
answer = MsgBox("Are you sure to save?", vbQuestion + vbYesNo + vbDefaultButton1, "Save Record")
If answer = vbYes Then
ConnecDatabase()
Sql = "Operation_InsertPO"
For i = 0 To DGV_PO.RowCount - 1
cmd = New SqlCommand
With cmd
.Connection = Conn
.Parameters.Clear()
.CommandType = CommandType.StoredProcedure
.CommandText = Sql
.Parameters.AddWithValue("@PONo", text_ponumber.Text)
.Parameters.AddWithValue("@ProductCode", DGV_PO.Rows(i).Cells(2).Value)
.Parameters.AddWithValue("@ProductName", DGV_PO.Rows(i).Cells(3).Value)
.Parameters.AddWithValue("@Units", DGV_PO.Rows(i).Cells(4).Value)
.Parameters.AddWithValue("@Qty", DGV_PO.Rows(i).Cells(5).Value)
.Parameters.AddWithValue("@Rate", DGV_PO.Rows(i).Cells(6).Value)
.Parameters.AddWithValue("@Amt", DGV_PO.Rows(i).Cells(7).Value)
.Parameters.AddWithValue("@User", GlobalVariables.UserName)
.ExecuteNonQuery()
End With
Next
cmd.Dispose()
Conn.Close()
MsgBox("Saved Successfuly", vbInformation)
End If
Catch ex As Exception
MsgBox(ex.Message, vbCritical)
Finally
If Conn.State = ConnectionState.Open Then
Conn.Close()
End If
End Try
End Sub
Private Sub DeleteData()
Try
ConnecDatabase()
Sql = "Operation_DeletePO"
cmd = New SqlCommand
With cmd
.Connection = Conn
.Parameters.Clear()
.CommandType = CommandType.StoredProcedure
.CommandText = Sql
.Parameters.AddWithValue("@pono", text_ponumber.Text)
.ExecuteNonQuery()
End With
Conn.Close()
Catch ex As Exception
MsgBox(ex.Message, vbCritical)
Finally
If Conn.State = ConnectionState.Open Then
Conn.Close()
End If
End Try
End Sub
Private Sub SaveData()
Try
Dim i As Integer
Dim answer As Integer
answer = MsgBox("Are you sure to save?", vbQuestion + vbYesNo + vbDefaultButton1, "Save Record")
If answer = vbYes Then
sql = "SET XACT_ABORT ON " & vbNewLine &
"BEGIN Tran Tran_Save " & vbNewLine &
"EXEC Operation_DeletePO @pono=" & text_ponumber.Text & vbNewLine
For i = 0 To DGV_PO.RowCount - 1
If Not DGV_PO.Rows(i).IsNewRow Then
sql += "EXEC Operation_InsertPO" &
" @PONo=" & text_ponumber.Text &
", @ProductCode=" & DGV_PO.Rows(i).Cells(2).Value &
", @ProductName=" & DGV_PO.Rows(i).Cells(3).Value &
", @Units=" & DGV_PO.Rows(i).Cells(4).Value &
", @Qty=" & DGV_PO.Rows(i).Cells(5).Value &
", @Rate=" & DGV_PO.Rows(i).Cells(6).Value &
", @Amt=" & DGV_PO.Rows(i).Cells(7).Value &
", @User=" & GlobalVariables.UserName & vbNewLine 'Environ("Username")
End If
Next
sql += "COMMIT TRAN Tran_Save"
ConnecDatabase()
cmd = New SqlCommand(sql, conn)
cmd.ExecuteNonQuery()
cmd.Dispose()
conn.Close()
MsgBox("Saved Successfuly", vbInformation)
End If
Catch ex As Exception
MsgBox(ex.Message, vbCritical)
Finally
If conn.State = ConnectionState.Open Then
conn.Close()
End If
End Try
End Sub