访问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都使用相同的数据库在同一个表单上运行。感谢您的投入!
答案 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]
。如果这是可以接受的,您就不需要打扰标签或文本框了。