计算的控件不会自动重新计算

时间:2011-07-17 06:23:53

标签: ms-access ms-access-2007

首先,关于我的设置。

我有一个包含三个表的原始数据库:

A。列出不同位置的表格:[location_code],[location_name]

B。描述项目的表:[item_code],[item_name],[item_price]

最后是一个将roo ^ H ^ H ^ H整个数据库连接在一起的表

C。表格说明每个位置存储的项目和数量:[location_code],[item_code],[item_quantity]。该表可以具有多个具有相同[location_code]的条目,因为不同的项可以存储在同一位置。基本上,这是一个从位置到项目的一对多关系的教科书实现,每个位置项链接附加一个额外的属性(数量)。

现在,我需要做的就是创建一个表单,列出存储在特定位置的所有项目。这是Access中“子窗体”功能的基本用例。主窗体只是导航到不同的位置,而子窗体列出项目。

我用

SELECT C.location_code, B.item_name, B.item_code, B.item_price, C.item_quantity 
FROM B INNER JOIN C ON B.item_code=C.item_code

作为子表单的记录源。主窗体通过[location_code]链接到子窗体。子表单设置为列表布局(不是表格布局),即每个数据库字段都有自己的控制元素。

到目前为止一切都很完美。我在主窗体中选择了位置,子窗体为我提供了当前位置的可编辑[item_name] - [item_price] - [item_quantity]三元组的列表。

下一步,我想为每个上述三元组添加一个计算控件。我想知道每种商品的总价格(即每行的[item_price] * [item_quantity])。很简单,我将计算的控件添加到子窗体的“可重复”区域并指定

= [item_price] * [item_quantity]

作为值的公式。再一次,一切都很完美。现在我的列表不是上面的三元组,而是每行有四个条目:[item_name] - [item_price] - [item_quantity] - [total_item_price]。而且,重要的是,当我编辑[item_price]或[item_quantity]时,[total_item_price]会在我完成编辑后自动重新评估。

作为最后一步,我想添加另一个计算控件,它将显示当前位置存储的所有项目的总价格(让我们称之为“总计”)。 A也控制子表单(这次进入“脚注”区域)并指定以下公式作为其值

= SUM([item_price] * [item_quantity])

现在,这有效。每次更改主窗体中的位置时,都会正确计算总值。此外,当我更改当前位置的任何项目的[item_price]时,总计也会自动更新。但是,当我更改[item_quantity]时,总计不会更新(???)。点击F9将使其更新。来回更改当前位置将更新它。但是,遗憾的是,仅仅更改[item_quantity]不会触发自动更新。

有谁知道,这里可能有什么问题?为什么[item_price]中的更改会触发总计的自动更新,而[item_quantity]中的更改则不会?直觉上,这些字段似乎具有相同的状态(除了前者来自表B,而后者来自表C)。为什么行为不同?如何自动更新?

2 个答案:

答案 0 :(得分:5)

在子表单的更新后事件中,明确重新计算总价格控制。

Me.txtTotalPrice.Requery

答案 1 :(得分:0)

如果您浏览记录并前进到下一条记录,它仍然不会更新。我认为价格是标签顺序中的最后一个字段,因此当您更改它时,您会选中下一条记录并提交更改。如果我是正确的,那么当您编辑数量时,您的选项卡将使您进入仍在当前记录中的价格字段,因此尚未将更改提交到表中。如果你进一步推进,那应该完成处理。

相关问题