【问题标题】:How do I make foreign-key combo boxes user-friendly on an Access form?如何在 Access 表单上使外键组合框用户友好?
【发布时间】:2010-09-14 06:14:46
【问题描述】:

我有两张桌子:

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”),因为我可以创建一个带有全名字段的视图。

稍后:

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

【问题讨论】:

    标签: ms-access forms user-interface


    【解决方案1】:

    将下拉框的rowsource设置为“select uid,first_name,lastname from tablename”并将columnwidth设置为0。这样第一列的宽度设置为零,因此用户看不到它。(您可以提供用分号分隔的其他列的宽度,即:0cm;4cm;4cm)

    【讨论】:

    • 访问如何知道使用 UID 字段而不是三元组 (UID,first_name,last_name) 作为要存储的值?
    【解决方案2】:

    为了扩展 Loesje 的答案,当您显示多个字段时,您可以使用 Bound Column 属性以及 Column Count 和 Column Widths,以便您可以告诉 Access 应该将哪个字段写入数据库。 (还有其他方法可以使用 VBA 执行此操作,但这应该适用于您的特定情况。)

    在您的情况下,将 Row Source 设置为 select uid, first_name, last_name from tablename 意味着您的 Bound Column 应为 1,用于 Row Source (uid) 中的第一列。这是默认值,因此如果您想保存来自不同字段的值,您只需更改它。 (例如,如果您想从上面的 Row Source 中保存 last_name,您可以将 Bound Column 设置为 3。)

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-26
      • 2018-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 1970-01-01
      相关资源
      最近更新 更多