如何在Access窗体上使外键组合框用户友好?

时间:2008-09-30 13:33:47

标签: ms-access forms user-interface

我有两张桌子:

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

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

我想为具有“联系点”组合框(下拉列表)字段的项目创建表单。显示值应为“first_name last_name”,但后备数据为UID。如何设置表单以向用户显示一件事并将另一件事保存到表中?

我可以只显示一个字段(例如“first_name”),因为我可以用full_name字段创建一个视图。

随后:

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

要展开Loesje的答案,当您显示多个字段时,可以使用“绑定列”属性以及“列数”和“列宽”,以便可以告诉Access应将哪一个写入数据库。 (还有其他方法可以使用VBA执行此操作,但这应该适用于您的特定情况。)

在您的情况下,将行来源设置为select uid, first_name, last_name from tablename意味着对于行源(uid)中的第一列,您的绑定列应为1。这是默认值,因此如果要从其他字段保存值,则只需更改它。 (例如,如果要从上面的行源保存last_name,则将“绑定列”设置为3。)

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

没有办法在表级指示基于该表的表单需要提取特定列,或者特定列是外键,但是您可以将组合框复制到其他表单并且它随身携带它的所有属性。您还可以复制行源查询并将其粘贴到其他组合框中,如果这有助于您。