2014-01-28 28 views
1

早上好,在一个表上基于现场在MS Access 2010

我设计在Access 2010数据库来跟踪库存如何更新另一个表中的字段。它为每个跟踪的物品指定一个货箱位置。每个产品将始终与一个垃圾箱相关联,并且没有垃圾箱将与多个产品相关联(但可以与0个产品关联)。产品可能在任何给定的时间移动到不同的垃圾箱,我需要能够搜索/过滤/等。通过仓位或产品名称。

目前,我有一个表单,一次显示一个记录(产品)的几个不同的字段。其中我包含一个组合框,其控件是一个提供所有空箱子列表的查询。该组合框将用于选择产品的货架位置,并更新[CurrentInventory].[Bin]字段。当[CurrentInventory].[Bin]更新我想完成以及其他两个任务:

  1. 更新[Bins].[AName]包含在 [CurrentInventory].[AName]相同的值,其中的[Bins].[Bin]值是一样的[CurrentInventory].[Bin]
  2. 清除之前的值[Bins].[AName],其中 [Bins].[Bin]等于之前的值 [CurrentInventory].[Bin]。这是以前的垃圾箱将显示为空的,并可用于其他产品。

我对Access还不是很有经验,并且对宏和VB都没有太多的经验,所以我很感激任何建议!

回答

0

在Access 2010(和更新),您可以通过使用在[CurrentInventory]表中的后更新事件驱动的数据宏实现自己的目标:

AfterUpdate.png

有关数据宏的更多信息,请参阅

Create a data macro

+0

@chrisleav你可以下载一个工作示例[这里](http://wikisend.com/download/913828/inventory.zip)。 –

+0

太棒了,这就是我需要的! – chrisleav

+0

在新纪录上选择储存箱之前,您还可以帮助我找到一种方法来确保为[AName]输入值?我尝试在窗体中的Bin字段上设置Nz([AName],0)<> 0'作为验证规则,但这不起作用。我尝试添加一个领先一步宏,也没有工作的: '如果ISNULL({CurrentInventory] ​​[AName]。)然后 引发错误 错误号码(001) 错误描述(前请输入一个名称选择垃圾桶。) StopMacro' 我应该做什么改变? – chrisleav