调用子例程作为 SQL 事务的一部分
Calling a subroutine as part of a SQL Transaction
我的项目是一个订单应用程序,用户可以在其中输入来自不同客户的订单,使用 UltraGrid
输入和编辑数据。当按下键盘上的 Delete 键时,它会提示 MsgBox
以供用户确认他们要删除所选行,如果是,它会运行 DELETE
查询以从数据库。
我还有一个保存按钮,允许用户保存对订单所做的 order/changes。理想情况下,我只希望临时删除网格中的行,因为如果用户随后不保存订单,则不应从数据库中永久删除订单行。
如果我将 DELETE
查询放入一个单独的子例程中,我可以从我的 class 中调用这个子例程并将其保存为事务的一部分吗?
这似乎行不通,因为我不仅需要调用查询,而且还以某种方式将删除的行临时存储在某个地方,以便它知道要在事务中删除哪些数据,因为还有一个 Boolean
变量来告诉它是否有任何数据要删除...
有没有更简单的方法来做到这一点?上面的方法行得通吗?
最简单的方法是将所有更改(添加、修改和删除)保存在内存中,然后在您点击“保存”按钮时将它们同步到数据库。
可能,您需要一个 AJAX 操作来将操作添加到服务器端,并需要一个客户端脚本来更新网格上的行。
网格不适用于后端数据库。它只处理它的本地数据源。因此,当您将数据保存回数据库时,检查已删除的行并保留它们。
如果您只想在单击保存按钮时更新本地数据源,您可以设置网格的 UpdateMode to OnUpdate. Then you will need to call grid's UpdateData 方法。同样,这将更新您的本地数据源。本地数据源如何以及何时更新后端数据库与网格没有任何共同之处。因此,根据本地数据源的类型,您需要在将更新的数据发送回数据库之前检查已删除的行。
整理好了...其实根本不需要什么复杂的东西,只需要更改代码,如下所示:
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)
我的项目是一个订单应用程序,用户可以在其中输入来自不同客户的订单,使用 UltraGrid
输入和编辑数据。当按下键盘上的 Delete 键时,它会提示 MsgBox
以供用户确认他们要删除所选行,如果是,它会运行 DELETE
查询以从数据库。
我还有一个保存按钮,允许用户保存对订单所做的 order/changes。理想情况下,我只希望临时删除网格中的行,因为如果用户随后不保存订单,则不应从数据库中永久删除订单行。
如果我将 DELETE
查询放入一个单独的子例程中,我可以从我的 class 中调用这个子例程并将其保存为事务的一部分吗?
这似乎行不通,因为我不仅需要调用查询,而且还以某种方式将删除的行临时存储在某个地方,以便它知道要在事务中删除哪些数据,因为还有一个 Boolean
变量来告诉它是否有任何数据要删除...
有没有更简单的方法来做到这一点?上面的方法行得通吗?
最简单的方法是将所有更改(添加、修改和删除)保存在内存中,然后在您点击“保存”按钮时将它们同步到数据库。
可能,您需要一个 AJAX 操作来将操作添加到服务器端,并需要一个客户端脚本来更新网格上的行。
网格不适用于后端数据库。它只处理它的本地数据源。因此,当您将数据保存回数据库时,检查已删除的行并保留它们。
如果您只想在单击保存按钮时更新本地数据源,您可以设置网格的 UpdateMode to OnUpdate. Then you will need to call grid's UpdateData 方法。同样,这将更新您的本地数据源。本地数据源如何以及何时更新后端数据库与网格没有任何共同之处。因此,根据本地数据源的类型,您需要在将更新的数据发送回数据库之前检查已删除的行。
整理好了...其实根本不需要什么复杂的东西,只需要更改代码,如下所示:
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)