【问题标题】:Access ComboBox to TextBox访问组合框到文本框
【发布时间】:2017-08-09 06:54:54
【问题描述】:

我有一个任务列表表单,其中包含一个用于列出任务优先级的组合框。组合框将行源绑定到优先级表。我有组合框工作,所以它显示“紧急,高等”的正确文本。基于 Task 和 Priority 表的关系。

我想做的是代替显示优先级的组合框,我希望它是一个文本框。这是我遇到问题的地方。

如何为表格表单执行此操作和/或我需要更改哪些字段才能完成此操作?

我已经尝试设置文本框:

  • Control Sources = [Priority]![Priorities] 这会在 文本框
  • Default Value = [Priority]![Priorities] 这也给出了#Error in 文本框
  • Control Source = DLookUp("[Priorities]","[Priority]","[ID]="&[Tasks]![Priority]) 这给出了#Name?在文本框中
  • Default Value = DLookUp("[Priorities]","[Priority]","[ID]="&[Tasks]![Priority]) 这也给出了#Name?在文本框中
  • Control Source = Priority 为 Tasks 和 Priority 表之间的关系提供编号查找

这个工作,但它明显很慢。是否有“更快”、更好的方式来做到这一点。

  • Control Source =DLookUp("Priorities","Priority","ID=" & [Priority])

【问题讨论】:

  • 您可能需要重命名您的文本框。
  • 您的优先级表是称为“优先级”还是“优先级”?如果是后者,那么您需要将您的 dlookup 更改为 DLookUp("[Priority]","[Priorities]","[ID]=" & [Priority]) 这还假设优先级 ID 是数字 - 如果它是文本,您需要在 dlookup 中输入“'”以说明它是一个字符串。

标签: ms-access vba ms-access-2007


【解决方案1】:

你为什么想要一个文本框?仍然需要一个组合框来选择优先级。

表单是否绑定到任务表?无法引用文本框控件源或默认值中的优先级表。 DLookup 在默认值中不起作用。控制源中的 DLookup 应该可以工作。

更简单的方法是将表单记录源设置为具有左连接或右连接的 SQL 语句,该语句将“包括来自任务的所有记录,并且仅包含来自优先级匹配的记录”。将文本框绑定到优先级中的描述性优先级字段。将文本框设置为 Enabled No 和 Locked Yes,这样用户就不能编辑它了。

如果目的是屏蔽/隐藏 ID,则将组合框设置为多列,使用其 RowSource SQL 拉取所需字段,并通过将 ID 列的宽度设置为 0 来隐藏 ID 列。或者不保存优先级 ID,保存实际的描述值。具有非常短的描述符和/或可以证明的小型数据库。

【讨论】:

  • 我认为 OP 最终希望掩盖主键/外键。我同意你的方法是最简单的方法。另一种方法是在每次记录更改时查找每个值,这非常浪费,并且在使用大型记录集时会引起巨大的延迟。
  • 见上面的修改答案。
  • 首选文本框,因为用户不能编辑表格形式,只能查看信息。我有一个用于编辑信息的按钮。 for 绑定到 Task 表。我让 DLookUp 在控制源上工作,但是填充文本框有一个相当不错的延迟。那是你在谈论改变记录来源吗?如果是这样,我在哪里可以找到该选项?
  • 表单在设计视图中,将其 RecordSource 属性设置为描述的 SQL 语句。双击省略号 (...) 打开查询设计器。
  • 好的。我将 RecordResource 更改为使用 join 进行查询,效果很好。谢谢大家。
猜你喜欢
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
相关资源
最近更新 更多