我目前正在使用以下代码来更新某些字段,以便用户不必输入它们。由于某种原因,它仅在已保存的记录上触发并忽略当前记录。
有趣的是,它工作了一天左右(包括当前记录)。然后 Access 开始崩溃,我被迫重新编写代码。
Private Sub RawMaterial_AfterUpdate()
sSQL = "UPDATE tmp_Formula INNER JOIN tbl_RawMaterial ON tmp_Formula.RawMaterial = tbl_RawMaterial.RawMaterial " _
& "SET tmp_Formula.MiscInfo = [tbl_RawMaterial].[MiscInfo], tmp_Formula.Potency = [tbl_RawMaterial].[Potency], " _
& "tmp_Formula.PUoM = [tbl_RawMaterial].[PUoM], tmp_Formula.CUoM = [tbl_RawMaterial].[ClaimUoM], " _
& "tmp_Formula.Cost = [tbl_RawMaterial].[Cost], tmp_Formula.CostUoM = [Tbl_RawMaterial].[CostUoM];"
CurrentDb.Execute sSQL, dbFailOnError
CurrentDb.TableDefs.Refresh
Me.Refresh
End Sub
有人可以帮我重写这个,使其包含当前记录吗?这可能无关紧要,但我尝试过 Me.CurrentRecord.SetFocus 和 Me.RawMaterial.SetFocus。都不起作用。
最佳答案
新记录(或对现有记录的编辑)必须首先提交到表中,以便可用于任何 SQL。在以下情况下提交记录:
1.关闭表/查询/表单
或
2. 移动到另一条记录
或
3.运行代码保存-选项:
a. 如果 Me.Dirty 那么 Me.Dirty = False
b. DoCmd.RunCommand acCmdSaveRecord
关于ms-access - 希望纠正我的更新后事件 (MS Access),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50418413/