【问题标题】:DLookUp behavior in Form_Current with Label CaptionsForm_Current 中带有标签标题的 DLookUp 行为
【发布时间】:2013-01-30 02:36:20
【问题描述】:

在此处访问 2010。

好的,Dlookup 的行为会根据它们的使用位置而有所不同。我有这个 Dlookup 在 ClockNo_AferUpdate() 子例程中,该子例程在新表单条目上运行良好,可根据在 ClockNo 组合框中输入的“ClockNo”将标签的标题更改为“EmployeeName”字段下的“Employees”数据库中的内容:

Me.LabelName1.Caption = DLookup("[EmployeeName]", "Employees", "[ClockNo] =" & Forms![InspectionEntryForm]!ClockNo)

Employees 数据库有四个字段:AutoNumber 类型的“ID”、Number 类型的“ClockNo”、文本类型的“Shift”和文本类型的“EmployeeName”。

重新编辑:

ClockNo 组合框的 RowSource 来自员工数据库:

SELECT DISTINCTROW [ClockNo], [EmployeeName] FROM [Employees] ORDER BY [ClockNo];

结束重新编辑

我正在寻找的是 Form_Current() 中的相同功能,因此浏览旧条目会根据输入的 ClockNo 保留标签的标题。不幸的是,简单地重新使用上述 Dlookup 会给出“运行时错误 '3075':查询表达式 '[ClockNo] =' 中的语法错误(缺少运算符)”。

将 Dlookup 作为控制源附加到文本框确实可以,但标签似乎是这里的最佳用途。我已经在 Dloopkup 的 Criteria 部分搞砸了一段时间,但没有任何真正的成功。

最终目标是在组合框旁边有一个简单的标签,该标签根据员工当前和过去的 ClockNo 条目显示员工的姓名。该姓名与他们的时钟编号和班次一起存储在单独的员工数据库中。

这应该很简单,因为 ClockNo 条目和 Label 都在同一个表单和同一个数据库上运行。感谢您的意见!

【问题讨论】:

  • '[EmployeeName]' 已添加到上述编辑的选择源中。通过 ClockNo 组合框 RowSource 在没有 Dlookup 的情况下采购 '[EmployeeName]' 是如何完成的? (我尝试了几种我熟悉的语法来访问其他类型的对象)感谢您的帮助!
  • 哦,我刚刚按原样提供了行源,没有进行任何编辑。我确实在我这边编辑了它(评论),很抱歉造成混乱。它现在为[EmployeeName] 和[ClockNo] 设置,因为我真的不需要[ID]。我想弄清楚的是在更新 ClockNo Combo 框后在 VBA 中获取对 [EmployeeName] 的引用。再次感谢!

标签: database forms ms-access lookup caption


【解决方案1】:

您有一个名为 ClockNo 的组合框,并以此为行来源:

SELECT DISTINCTROW [ClockNo], [EmployeeName]
FROM [Employees]
ORDER BY [ClockNo];

我不知道你为什么要DISTINCTROW。我会怀疑DISTINCT 更合适。但我认为这并不重要。

重要的一点是组合已经包含[EmployeeName],因此您不需要再次使用DLookup 来获取[EmployeeName]。只需从组合所选行的第二列中读取值。

假设您的表单包含一个名为 txtEmployeeName 的文本框。在表单的当前事件中,您可以这样做:

Me.txtEmployeeName = Me.ClockNo.Column(1)

注意列索引号从 0 开始,所以第二列是.Column(1)。

你可以在组合的更新后事件中做同样的事情。

最后,您想更改标签的.Caption,但我向您展示了如何更改文本框的.Value。如果您无法使此技术与标签一起使用,请改用文本框。您可以将文本框的 Enabled 属性设置为 No 并调整其其他属性,使其在视觉上与标签无法区分。

另一种方法可能更简单。如果您想将[ClockNo] 保留为组合的绑定值,但愿意将[EmployeeName] 显示为组合的选定值,则可以将第一列的宽度 ([ClockNo]) 设置为零。您仍然会在下拉列表中同时看到 [ClockNo] 和 [EmployeeName]。如果这是可以接受的,您就不需要使用标签或文本框了。

【讨论】:

  • 好的。我弄乱了分配给组合框的“列计数”,并认为寻址[EmployeeName] 与列有关(下拉列表中的 2 列几乎满足了我的需要)。太感谢了!要记住的语法!
  • 不客气。我添加了另一个建议,但不确定它是否符合您的需求。
  • 我会调查的。它肯定会为表单提供更流线型的外观。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-28
  • 1970-01-01
相关资源
最近更新 更多