首页 > 解决方案 > 我应该基于查询构建表单以查看两个相关实体的属性吗?

问题描述

我正在 Microsoft Access 2016 中构建一个数据库,我有两个关系(表):一个 Personnel 表和一个 Daily Activity 表。Daily Activity 表通过一对多关系引用 Personnel 表(Employee Number 在 Daily Activity 表中是外来的)。

我正在为用户构建一个表单以输入他们的日常活动,我希望用户能够选择他们的姓名或呼号,而不仅仅是通过自动编号建立的一些随机生成的主键(我知道,最终,用户将拥有他们的拥有在 DBMS 中自动识别它们的个人配置文件)。

如果我仅基于 Daily Activity 表构建表单,则 Employee Number of Personnel 表的查找字段是一些随机生成的数字,对于每个员工识别自己可能不是很有用。因此,我是否应该基于这两个表构建一个查询并使用该查询作为表单的基础,使用 Daily Activity 表中的所有字段并说,名字,姓氏(我实际上有一个名字连接的连接问题,如果可能的话,我可能也会使用它),呼号,当然还有员工编号字段?

标签: formsms-accessrelationship

解决方案


正如您所发现的,即使是数据库设计人员也不想直接处理主键。解决方案是使用查找。查找是当您显示可理解的标签而不是基础数字时。虽然 access 允许您使用表设计模式向表中的列添加查找,

https://support.office.com/en-us/article/create-or-delete-a-lookup-field-87e84cbd-d60c-4473-8a98-3e391c42f239

,经验告诉我不要管桌子。访问友好的方法是在表单和报告中使用组合框。当我开始使用表单向导时,我通常会删除 DailyActivityID 文本框:

在此处输入图像描述

或者在使用表单向导时甚至不包括它:

在此处输入图像描述

在幕后 DailyID 仍然存在链接您的表格,表单用户只是看不到它。

接下来,我们通过将绑定的文本框替换为组合框来查找员工编号。只需右键单击 EmployeeNumber 文本框即可查看更改为组合框的选项。在这种情况下,一旦您拥有组合框,请确保绑定列为 1,然后将列数设置为 2,将列宽设置为 0 和 1,如下所示: 在此处输入图像描述

然后更改行源属性,使 EmployeeNumber 为不可见的 0 宽度列:

在此处输入图像描述

您还可以使用计算列来显示员工全名:

在此处输入图像描述

现在表单显示了一个对用户更友好的名称。要循环浏览记录,请使用表单底部的记录选择器。

在此处输入图像描述

接下来,我通常会删除记录选择器并将它们替换为标题中的另一个组合框。

http://vbahowto.com/how-to-make-a-ms-access-filter-form-with-combobox-using-vba/


推荐阅读