为什么在更新后更新DSUM之后

时间:2010-10-13 06:38:41

标签: ms-access access-vba

我有一个subForm,aContinuous Form,由JobItemId字段过滤,有一个字段价格,价格更新后我想确定JobItemId的新价格总和,并将其传递给其他地方进行处理。

我有这段代码:

Private Sub Price_AfterUpdate()
   Dim TotalCost As Currency
   Dim strFilter As String
   strFilter = "[JobItemID] = " + Str(JobItemID.Value)
   TotalCost = DSum("[Price]", Me.Recordset.Name, strFilter)
   Me.Parent.Total = TotalCost
   Me.Parent.Update_FinalPrice
End Sub

我在TotalCost上设置了一个监视器,以便我可以验证传递的值,并发现总数是更新前的值。为什么会这样,我需要做些什么来获得更新后的正确总结?

1 个答案:

答案 0 :(得分:2)

您的代码在控件的AfterUpdate事件中触发。您需要将其移动到表单的AfterUpdate事件(即Form_AfterUpdate)。

DSum对提交给数据库的记录进行操作,但即使您的价格已在Price控件的AfterUpdate事件中更新,它仍未提交到数据库(Access通过显示写入铅笔来指示记录选择器)。在提交更新的记录之后,立即触发Form_AfterUpdate事件。