带有标题标题的Form_Current中的DLookUp行为

时间:2013-01-29 12:36:47

标签: database forms ms-access lookup caption

访问2010年。

好的,Dlookups根据它们的使用位置显得不同。我有这个Dlookup 在ClockNo_AferUpdate()子程序中,该子程序适用于新表单条目,根据ClockNo组合框中输入的“ClockNo”,将标签的标题更改为“EmployeeName”字段下“Employeees”DB中的内容:

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

Employees数据库有四个字段:AutoNumber-type“ID”,Number-type“ClockNo”,Text-type“Shift”和Text-type“EmployeeName。”

重新编辑:

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

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

END重新编辑

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

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

最终目标是在组合框旁边放置一个简单标签,根据当前和过去的ClockNo条目显示员工姓名。该名称存储在一个单独的Employees数据库中,同时还包含它们的时钟编号和它们的移位。

这应该非常简单,因为ClockNo条目和Label都使用相同的数据库在同一个表单上运行。感谢您的投入!

1 个答案:

答案 0 :(得分: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)

你可以在组合的After Update事件中做同样的事情。

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

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