1

在此处访问 2010。

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

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

雇员数据库有四个字段:自动编号类型“ID”、编号类型“ClockNo”、文本类型“Shift”和文本类型“雇员姓名”。

重新编辑:

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

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

结束重新编辑

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

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

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

这应该很简单,因为 ClockNo 条目和 Label 都在同一个表单上使用同一个数据库进行操作。感谢您的输入!

4

1 回答 1

1

您有一个以此命名的组合框ClockNo作为其行源:

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

我不确定你为什么想要DISTINCTROW那里。我会怀疑DISTINCT更合适。但我不认为这很重要。

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

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

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

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

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

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

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

于 2013-01-29T18:03:02.877 回答