vba - 允许从一个表中删除数据以添加到另一个表
问题描述
我已经多次发布过这张表格和表格,我知道我不应该这样做。我的代码有问题。我需要当 ToGo 达到 0 时,WorkOrders 表上的行移动到 Done WorkOrders 表,然后从 WorkOrders 表中删除。我之前的代码是
Private Sub ItemCode_Dirty(Cancel As Integer)
Dim DB As DAO.Database
Dim rs As DAO.Recordset
Set DB = CurrentDb
Set rs = DB.OpenRecordset("Select ToGo from WorkOrders where ItemCode =" & Me.ItemCode)
With rs
.Edit
!ToGo = !ToGo - 1
.Update
.Edit
End With
End Sub
这只是让我的代码每次扫描减少 1。所以,我添加了其余的代码来切换到另一个表,然后删除,但现在我的 ToGo 根本不会减少。这是我现在使用 if 语句的更新代码。
Private Sub ItemCode_Dirty(Cancel As Integer)
Dim DB As DAO.Database
Dim rs As DAO.Recordset
Dim i As Integer
Dim rsOld As DAO.Recordset
Dim rsNew As DAO.Recordset
Set DB = CurrentDb
Set rs = DB.OpenRecordset("Select ToGo from WorkOrders where ItemCode =" & Me.ItemCode)
Set rsNew = CurrentDb.OpenRecordset("SELECT * FROM WorkOrders")
Set rsOld = CurrentDb.OpenRecordset("Select * from WorkOrders where ItemCode =" & Me.ItemCode)
If ToGo > 0 Then
With rs
.Edit
!ToGo = !ToGo - 1
.Update
.Edit
End With
Else
rsNew.AddNew
For i = 0 To rsOld.Fields.Count - 1
rsNew.Fields(i).Value = rsOld.Fields(i).Value
Next
rsNew.Update
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM WorkOrders WHERE ItemCode= & Me.ItemCode
DoCmd.SetWarnings True
rsNew.Close
rsOld.Close
Set rsNew = Nothing
Set rsOld = Nothing
End If
End Sub
有人可以让我知道这是否可能。
解决方案
不是在表之间“移动”记录,而是通过在字段中编辑来更改记录状态。您似乎已经有一个指示工作订单“完成”的字段 - ToGo 字段。考虑:
With rs
If Not .EOF Then
If !ToGo = 0 Then
.MoveNext
End If
.Edit
!ToGo = !ToGo - 1
.Update
End If
End With
推荐阅读
- postgresql - 启用/禁用 RLS 和授予/撤销权限有什么区别
- java - 列表只有一个元素
- google-apps-script - 我可以使用脚本发送带有 HTML 格式的电子邮件吗?
- windows - 使用 Windows 批处理脚本从文本文件中删除前几行
- html - 如何在不使用函数的情况下重新分配范围变量
- git - 通过分叉合并回购的两个分支时如何解决冲突?
- ruby - ActiveSupport::MessageVerifier::InvalidSignature 在 RegistrationsController#create
- ios - Popover 视图控制器的角半径
- html - 如何使用 svg 使椭圆在其轴上旋转?
- sql-server - 如何在 LinQ 中转换此咨询