7

我正在开发一个基于 Microsoft Access 2013 的信息系统。客户的需求之一是通过使用具有可用值的组合框来简化数据输入过程。

例如,不是输入agentID客户端要求让用户从组合框中选择代理名称,而是与其他类似字段的相同逻辑。

简而言之:
我需要尽可能避免输入值 ID 并让用户从组合框中选择它们。

Microsoft Access 有一个内置的查找向导,允许用户将表字段与另一个表中的特定字段绑定,例如使用/通过查找向导链接,并让用户cityID从组合框中选择城市,而不是通过键入特定城市 ID 输入字段。tblVoyagetblCitiescityID

一切看起来都很棒,但有一个令人困惑的时刻。在 DB 课程中,我了解到,为了构建数据库并使用它,我们必须定义表之间的关系(1:1、1:M、M:N),但如果我这样做,我就不能使用查找向导,因为我已经定义了表之间的关系。因此,用户必须手动输入所有 ID,而不是从组合框中选择它们。

所以,我想要:

  1. 了解何时应该使用 Access 查找向导以及何时定义表之间的关系。
  2. 当用户必须键入数据而不是从组合框中选择想要的项目时,如何正确地最小化次数。
4

1 回答 1

8

这里的普遍共识似乎是应该避免查找字段。它们实际上只是拥有“正确”查找表的捷径,它们隐藏了表级别的实际情况。例如,假设您有一个 [Size] 的查找字段,其值为“Small”、“Medium”和“Large”。当您查看表格时,您会看到单词,但很有可能该表格确实包含1、2 和 3 之类的数字。您转到

UPDATE tblName SET Size="Large"

并且查询失败,因为您实际需要做的是

UPDATE tblName SET Size=3

(当您维护一个“正确”的单独查找表时,主表中的字段会显示该字段中的实际内容:查找表中所选项目的 PK 值。您仍然可以设计表单以填充组合框查找表并绑定到主表中的字段。)

更令人困惑的是,查找向导提供了“允许多项选择”选项,因此一个字段可以包含多个值(某种程度)。这显然是添加的,因此 Access 可以更好地与 SharePoint 一起工作,而这确实是唯一应该使用该功能的时候。在绝大多数其他情况下,最好显式维护一个单独的子表来存储多个选择。

编辑

组合框向导将指导您完成将组合框链接到其记录源(查找表)并将其值绑定到数据表中的字段的过程。例如,假设您已经为 [Agents] 设置了查找表

ID  AgentName
--  ---------
 1  Gord     
 2  Angie    

...以及 [Accounts] 的数据表

ID  agentID  AccountName
--  -------  -----------

您创建一个以 [Accounts] 表作为其Record Source. 当您将组合框添加到表单时,向导应该运行并询问您“您希望您的组合框如何获取其值?”。您选择“我希望组合框从另一个表或查询中获取值”。

cbw1.png

在下一步中,您选择 [Agents] 表:

cbw2.png

接下来,您告诉向导您要显示 [AgentName]:

cbw3.png

选择排序顺序(如果需要)后,您可以确认列宽。启用“隐藏键列(推荐)”。

cbw4.png

最后,您可以选择复选框的值会发生什么。这是您将其“绑定”到 [Accounts] 表中的 [agentID] 字段的地方:

cbw5.png

请注意,组合框将显示[agentName]供用户选择,但.Value它将是数字[Agents].[ID],这将存储在[Accounts].[agentID].

于 2013-05-04T21:58:29.023 回答