调用子例程作为SQL事务的一部分

时间:2016-09-15 15:49:41

标签: vb.net ms-access infragistics

我的项目是订单应用程序,用户可以使用UltraGrid输入和编辑数据,从而输入来自不同客户的订单。当在键盘上按下Delete键时,它会提示MsgBox用户确认他们要删除所选行,如果是,则会运行DELETE查询以从中删除该行数据库中。

我还有一个“保存”按钮,允许用户保存对订单所做的订单/更改。理想情况下,我只希望网格中的行暂时删除,因为如果用户没有保存订单,则不应从数据库中永久删除订单行。

如果我将DELETE查询放入一个单独的子例程中,我可以从我的类中调用这个子例程,将其保存为事务的一部分吗?

这似乎无法正常工作,因为我不仅需要调用查询,而且还会以某种方式暂时将已删除的行存储在某处,以便它知道要在事务中删除哪些数据,以及一个Boolean变量来告诉它是否有任何数据要删除......

有没有更简单的方法呢?上述方式是否有效?

3 个答案:

答案 0 :(得分:2)

对它进行排序......根本不需要任何复杂的操作,只需要更改代码,如下所示:

Try
   Dim Dc As New OleDbCommand
   Dim rowcode As String = ""

         rowcode = dr.Item("Product_Code").Value

更改为:

Try
   Dim Dc As New OleDbCommand
   Dim rowcode As String = ""

         rowcode = dr.Item("Product_Code", DataRowVersion.Original)

答案 1 :(得分:1)

最简单的方法是将所有更改保留在内存中(添加,修改和删除),然后在点击“保存”按钮时将它们同步到数据库。

可能,您需要使用AJAX操作将操作添加到服务器端,并使用客户端脚本来更新网格上的行。

答案 2 :(得分:1)

网格不适用于后端数据库。它只处理其本地DataSource。因此,当您将数据保存回数据库时,请检查已删除的行并保留它们。

如果您只想在保存按钮上更新本地数据源,可以将网格UpdateMode设置为OnUpdate。然后,您需要调用grid UpdateData方法。同样,这将更新您的本地数据源。本地数据源如何以及何时更新后端数据库与网格没有任何共同之处。因此,根据本地数据源的类型,您需要在将更新的数据发送回数据库之前处理已删除行的检查。

相关问题