【问题标题】:MS Access: Auto-populate form fields based on multiple tablesMS Access:基于多个表自动填充表单字段
【发布时间】:2017-07-01 22:11:25
【问题描述】:

我有以下 3 个表:
零售商 - ID、名称
注册 - ID、状态(是/否)
退款 - ID(填充到零售商表的下拉列表中)、名称(空)、状态(空)

Retailers 是一个充满数据的表格,而 Refund 一开始是一个空表,随着 Refund Form 的填写而填写。基于 Refund 表创建表单后,如何允许用户从下拉列表中选择一个 ID,并将相应的 Name 填充到 Name 字段中,将 Status 填充到 Status 字段中?

需要哪些查询以及如何将其集成到表单中?

我已经尝试过这里找到的方法 - https://www.linkedin.com/pulse/autofill-form-microsoft-access-tim-miles

但是,我遇到了两个问题:

1) 表单没有出现在“表单视图”中;它只能在布局视图中查看。我已经阅读了许多链接,说查询是只读的,或者首先没有记录等。答案没有意义。

2) 如果我以这种方式将表单(而不是表)绑定到查询,如何将这些新数据保存到另一个表中?我的意图是将记录保存在 Refund 表中。

【问题讨论】:

  • 我们需要更多详细信息来帮助您,您在退款表格中填写了哪个字段?您谈论 ID,但您的 3 个表包含一个名为“ID”的字段。你到底需要什么?!你的表之间有什么关系?它会帮助我们帮助你,谢谢:)
  • 3个ID的内容都是一样的。我们的想法是从 Refund 表单中选择一个 ID,该表单实际上是由 Retailers 表中的 ID 填充的,以便将 Name 和 Status 从 Retailers and Registration 中提取到 Refund。

标签: database forms ms-access populate


【解决方案1】:

听起来 Refund 是您的基表。所以,你想要的查询是:

SELECT a.[ID], b.[Name], c.[Status]
FROM Refund as a
Left Join Retailers as b
ON a.[ID] = b.[ID}
Left Join Registration as c
ON a.[ID] = c.[ID]

您需要将所有 3 个 ID 字段都设为各自表中的主键。这应该使查询可更新,然后您可以将此查询用作表单的数据源。

您还必须确保为所有表设置了关系。如果您从未做过,这很容易做到,Microsoft 在此处为您提供说明:

https://support.office.com/en-us/article/Create-a-relationship-40c998dd-4875-4da4-98c8-8ac8f109b85b

通过在关系中设置参照完整性,您可以保存数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 2021-12-21
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    相关资源
    最近更新 更多