Ms access MS Access:保存子记录时更新父记录

Ms access MS Access:保存子记录时更新父记录,ms-access,sql-update,ms-access-2010,Ms Access,Sql Update,Ms Access 2010,我创建了两个表;资产和资产变动。我还创建了主资产表单和资产移动表单。资产移动表单本质上是资产表单的副本,但它的记录源是AssetMovements表。我在AssetMovements表(AssetTag字段)中创建了一个查找,这样用户可以从组合框中选择一个资产标记,该资产的详细信息将自动填充到表单上的其余字段中。表单上唯一可编辑的字段是“Location”和“AssignedTo”字段,这是指员工。 现在,一切正常,但问题是如果我使用AssetMovements表单创建一个新记录并保存它,原始记

我创建了两个表;资产和资产变动。我还创建了主资产表单和资产移动表单。资产移动表单本质上是资产表单的副本,但它的记录源是AssetMovements表。我在AssetMovements表(AssetTag字段)中创建了一个查找,这样用户可以从组合框中选择一个资产标记,该资产的详细信息将自动填充到表单上的其余字段中。表单上唯一可编辑的字段是“Location”和“AssignedTo”字段,这是指员工。 现在,一切正常,但问题是如果我使用AssetMovements表单创建一个新记录并保存它,原始记录中驻留在“资产”表中的“位置”字段将不会更新。原始记录中的“AssignedTo”字段也是如此


每当在资产表中创建新的资产移动时,是否有方法更新资产表中的主资产记录?

听起来您试图做的是跟踪资产的历史记录(它所属的位置和人员)。自然的方法是更新资产,并在资产移动表中记录更改

在许多数据库中,您可以使用触发器来完成此操作。无论是通过UI还是直接SQL查询更新资产,都不会失败。但是,MS Access本身没有触发器。因此,您只能在UI中执行此操作

您可以在UI中通过向表单添加更新后事件,并将更改的记录复制到AssetMovements来完成此操作。反之亦然。否则,对于新资产,您将首先创建AssetMovement,然后再创建资产

我也使用了HansUp的建议,即将位置/分配放在AssetMovements中,并在表单/报表上显示最新的值。我不喜欢这样做,因为这会使表单变得更复杂,如果您有很多更新,您可能最终会受到性能影响


然后,如果您的数据库变得足够大,以至于性能受到明显影响,那么您可能无论如何都应该将数据迁移到另一种数据库。

您必须在资产表中存储位置和分配到吗?似乎您可以根据需要从与该资产表匹配的最新资产移动记录中检索它们。是否允许g ACCESS创建一个空白记录,然后填写信息?Hello@HansUp,如果我不将它们存储在资产表中,这意味着对于新资产,我将首先创建主资产记录,然后创建资产移动记录,只是为了给资产一个位置。似乎这会使事情复杂化..Kassabba,不,没有空白记录。谢谢对于您的回答,CodeSlave。我正在尝试跟踪资产的历史记录。我认为将更改的记录复制到AssetMovements表是一个好主意。但是,如何在位置上设置After update事件并将其分配到字段,以便在更新任何字段时,将记录的a副本保存到AssetMovements表tMovements表?您可以在更新事件后在Location/AssignedTo字段上单独设置它,但这会在每次更改其中一个字段时创建一条记录,但在将记录提交到数据库之前。相反,我会直接(通过ADO或DAO)将一条新记录添加到AssetMovement表中在窗体的AfterUpdate事件期间。右键单击窗体中标尺旁边/上方的框,选择“属性”,然后转到“事件”选项卡。这将是列表中的前几个事件之一。单击省略号并选择“代码生成器”。从那里,它是VBA代码。