【问题标题】:How to update field on one table based on field in another table in MS Access 2010如何根据 MS Access 2010 中另一个表中的字段更新一个表上的字段
【发布时间】:2014-02-20 05:16:25
【问题描述】:

早上好,

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

目前,我有一个表单,可以一次显示一条记录(产品)的多个不同字段。在其中,我包含了一个组合框,它的控件是一个提供所有空箱列表的查询。此组合框将用于选择产品的库位,并更新[CurrentInventory].[Bin] 字段。当[CurrentInventory].[Bin] 更新时,我还希望完成另外两项任务:

  1. 使用包含在 [CurrentInventory].[AName] 其中[Bins].[Bin] 的值与[CurrentInventory].[Bin] 相同。
  2. 清除之前记录中[Bins].[AName]的值 where [Bins].[Bin] 等于之前的值 [CurrentInventory].[Bin]。这样之前的垃圾箱就会显示为空并可供其他产品使用。

我对 Access 的经验还不是很丰富,而且对宏和 VB 的经验也很有限,所以我很感激任何建议!

【问题讨论】:

    标签: ms-access ms-access-2010


    【解决方案1】:

    在 Access 2010(及更高版本)中,您可以通过在 [CurrentInventory] ​​表上使用更新后事件驱动数据宏来实现您的目标:

    有关数据宏的详细信息,请参阅

    Create a data macro

    【讨论】:

    • @chrisleav 你可以下载一个工作示例here
    • 太棒了,这就是我需要的!
    • 您还能帮助我找到一种方法来确保在新记录上选择 bin 之前为 [AName] 输入值?我尝试将Nz([AName],0)<>0 设置为表单中 Bin 字段的验证规则,但这不起作用。我尝试在您的宏之前添加一个步骤,这也不起作用:If IsNull({CurrentInventory].[AName]) Then Raise Error Error Number (001) Error Description (Please enter a name before selecting a bin.) StopMacro 我应该做些什么不同的事情?
    • @chrisleav 如果新记录必须始终具有 [AName],那么您只需在设计视图中打开表并将该字段的 Required 属性设置为 Yes。这样就够了吗?
    • [AName] 和其他几个字段目前是必需的。问题是,当我创建新记录时, Bins 表上的 [AName] 没有更新;上面的宏仅适用于现有记录。例如,我们能否在 [CurrentInventory].[Bin] 上设置验证规则以确保 [AName] 不为空,并在 [CurrentInventory].[AName] 更新时保存记录?或者在保存记录之前隐藏/禁用 Bin 字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多