我的情况是我需要为报告添加一个额外的名称。我需要的名称必须与特定的员工ID相匹配。
我读到我可以使用 =DLookup()
来执行此操作,但我遇到了问题。
以下是我目前尝试解决此问题的方法。
我设置了一个名为[EE Query]的查询,内容为
SELECT Employees.FirstName, Employees.LastName
FROM Employees WHERE (((Employees.ID)=[Escalations].[EE]));
在我的报告中,我使用以下内容作为所需字段中的控制源
的 "=DLookUp([FirstName],[EE Query])"
因此,当我运行报告时,我会收到一个输入框,要求我输入"EE Query"
的值。我发现这很奇怪,因为那不是一个参数。
所以我想我可能搞砸了,但它要求[Escalations].[EE]
的值,但是当我输入所需EE的ID时,textbox shows "#Error"
1}}
我不知道哪里出错了。
此外,如果它有助于此报告的记录源,请记住,此处的FirstName字段是指TSE而不是所需的EE。
SELECT [Report Query].DateTime, [Report Query].EscalationNeed,
[Report Query].EscalationOutcome, Employees.FirstName, Employees.LastName,
[Report Query].TSE, [Report Query].EE
FROM Employees INNER JOIN [Report Query]
ON Employees.[ID] = [Report Query].[TSE];
[Escalations] [Employees] [Titles]都是表格。 Access 2010
答案 0 :(得分:1)
以下是两种不同的解决方案
解决方案1 - 在VBA中
如果您需要动态创建文本框,此解决方案非常有用。 在Form_Open事件中添加这3行代码
Dim s As String
s = "=DLookup(""FirstName"",""Employees"",""(Employees.ID)=[Escalations].[EE]"")"
txtYourTextBox.ControlSource = s
解决方案2 - 直接在界面中
将控件的ControlSource属性设置为= DLookup(“FirstName”;“Employees”;“Employes.ID = Escalations.EE”)
警告强>
请注意,使用VBA和界面时存在根本区别(:-(():第一种情况下参数之间的分隔符是逗号(,),第二种情况下是semicolomn(;)
答案 1 :(得分:0)
我还没有解决实际问题,但我改变了我的数据库设计,以便在访问时更容易使用。
为此,我为EE和TSE类型的员工创建了一个单独的表,以便我可以轻松地在报告的记录源中包含每个名称。然后,我将所需的框设置为EE名称的现在可用的控制源字段。