Ms access 2013 为什么DSUM在命名数据宏中工作不正确?

Ms access 2013 为什么DSUM在命名数据宏中工作不正确?,ms-access-2013,ms-access-data-macro,Ms Access 2013,Ms Access Data Macro,摘要: 我正在尝试使用带有DSUM的命名数据宏来维护父记录的子记录总数。编辑子记录时,data宏确实会更改父记录,但结果似乎基于当前记录的旧值 详细信息: 我有一个类似于微软Northwind数据库的数据库。可在以下网址找到副本: 它有tblOrder和tblOrderDetail。tblOrder有一个命名的数据宏,该宏在tblOrderDetail的更新后数据宏中调用。命名的数据宏使用DSUM(“Ext Price”、“tblOrderDetail”、“Order ID”和@Order ID

摘要:

我正在尝试使用带有DSUM的命名数据宏来维护父记录的子记录总数。编辑子记录时,data宏确实会更改父记录,但结果似乎基于当前记录的旧值

详细信息:

我有一个类似于微软Northwind数据库的数据库。可在以下网址找到副本:

它有tblOrder和tblOrderDetail。tblOrder有一个命名的数据宏,该宏在tblOrderDetail的更新后数据宏中调用。命名的数据宏使用DSUM(“Ext Price”、“tblOrderDetail”、“Order ID”和@Order ID)。数据宏运行,但结果似乎基于子记录的旧值

我在附近找到了一个工作。我没有使用DSUM,而是使用局部变量和“For Each Record In”循环来计算正确的总和


虽然我的工作是可行的,但我仍然想知道为什么DSUM方法不起作用。非常感谢您提供的任何帮助。

你好,汤姆。这只是我的猜测,所以不要认为这就是正在发生的事情。在数据宏中,所有更新基本上都是在一个进程的内存中发生的。例如,如果遇到错误,进程将停止。我猜想使用DSum方法时,Access实际上是读取磁盘上当前提交的值,因为数据宏尚未完成所有事务工作。首选的方法是将ForEachRecord循环中的值相加,将其分配给变量,然后将该值保存到主父记录中。谢谢Jeff,这很有意义。顺便说一句:我最近买了你的“Access 2013 Inside Out”书。很好的材料。谢谢。很高兴我能帮助汤姆。谢谢你对我的书的评论。祝你的访问项目好运。