如何解决Access Userform:如何最好地显示查找表中的字段?
Table1 有一个字段 ItemID
;我用它来查找 Table2 中的相应记录,其中包含字段 ItemID
和 ItemDescription
。
我的表单使用 Table1 作为其记录源。我想在组合框或文本框中显示 Table2 中的 ItemDescription
。
从我读到的内容来看,有几种方法可以实现这一点,但我不知道哪种被认为是标准方法:
- 向表单添加一个子表单,将 Table2 作为其记录源。
- 结合 Table1 和 Table2 进行查询,并将查询用作表单的记录源。
- 使用 SELECT 语句作为 Table1 的记录源,从两个表中提取字段。 (基本上,以不同的方式使用上述查询。)
- 使用 DLOOKUP 作为文本框的控件源,类似于
=Dlookup("ItemDescription","Table2","ItemID = Forms!MyForm!ItemID"
就我而言,我希望我必须将 Table1 链接到大约五个不同的查找表;其中一些可能有自己的查找表。
在表单上显示来自多个表格的数据的最佳方式是什么?
解决方法
-
向表单添加一个子表单,将 Table2 作为其记录源。
这是一种矫枉过正。仅对主表单位于一对 n 关系一侧的详细记录执行此操作。 -
结合 Table1 和 Table2 进行查询,并将查询用作表单的记录源。
这仅适用于一种方式,并且适用于只读表单。但是您不能编辑该值,并且当您对另一个包含 id 的字段进行编辑时,该值不会改变 -
使用 SELECT 语句作为从两个表中提取字段的 Table1 的记录源。
同上。 -
使用 DLOOKUP 作为文本框的控件源。
这很有效,您可以在必要时使用textbox.Requery()
更新文本框。但当然,您不能编辑该值。
用于显示和编辑值的一个选项是使用 ComboBox
。像这样设置组合框:
- (在数据部分)将控件来源设置为ItemID。这是表单记录来源的一列。
- 将行源类型设置为表/查询
- 指定查询名称或 SELECT 语句作为行来源。选择 Id 作为第一列,选择显示名称作为第二列。例如。
SELECT ItemID,ItemDescription FROM Table2 ORDER BY ItemDescription;
- 将绑定列设置为1(ID列)
- 将限制到列表设置为是
- (在格式部分)将列数设置为2
- 将 Column Widths 设置为 0 以隐藏带有 Id 的第一列。如果要显示多列,可以在此处指定以逗号或分号分隔的列宽列表。
- 如果需要,您可以在 ListRows 中指定比默认 8 行更多的行数。
现在组合框会自动显示 ItemDescriptions 并且是可编辑的。 IE。您可以从显示 ItemDescriptions 的下拉列表中选择另一个 Item,表单上的 ItemID 将被更新。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。