如何在Access表单上使外键组合框变得用户友好?

时间:2020-03-06 14:55:19  来源:igfitidea点击:

我有两张桌子:

Employees:
uid (number) | first_name (string) | last_name (string) | ...

Projects:
uid | project_title (string) | point_of_contact_id (FK: Employees.uid) | ...

我想使用"接触点"组合框(下拉列表)字段为Projects创建一个表单。显示值应为" first_name last_name",但支持数据为UID。如何设置表单以向用户显示一件事并将另一件事保存到表中?

我只能显示一个字段(例如,仅显示" first_name")就可以了,因为我可以创建一个具有full_name字段的视图。

之后:

如果有一种方法可以在表设计级别执行此操作,则我宁愿这样做,因为那样的话,我只需要为每个UID列设置一个设置(并且有很多表),而不是为每个UID字段设置一个设置(而且有多种形式,每种形式都有几个UID字段)。

解决方案

将下拉框的行源设置为"从表名中选择uid,first_name,lastname",并将columnwidth设置为0。这样,第一列的宽度设置为零,因此用户看不到它。(我们可以提供其他列的宽度,以分号分隔,即:0cm; 4cm; 4cm)

为了扩展Loesje的答案,在显示多个字段时,可以将"绑定列"属性与"列数"和"列宽"一起使用,以便可以告诉Access应该将哪个字段写入数据库。 (还有其他方法可以使用VBA进行此操作,但这应适用于特定情况。)

在情况下,将"行源"设置为"从表名中选择uid,first_name,last_name"意味着"绑定列"应为1,即行源(uid)中的第一列。这是默认值,因此仅在要保存其他字段中的值时才需要更改它。 (例如,如果我们想从上面的行源中保存last_name,则可以将"绑定列"设置为3. )

不要忘记,当我们设置要显示的其他列的宽度时,组合框的Width属性应大于或者等于列宽的总和,否则我们可能看不到所有列。

没有一种方法可以在表级别上指示基于该表的表单需要拉特定的列,或者特定的列是外键,但是我们可以将组合框复制到其他表单,它将包含所有内容。它的特性。如果有帮助,我们还可以复制"行源"查询并将其粘贴到其他组合框中。