在 MS Access 中,我需要查找记录并将其用作报告的 'Control Source'

In MS Access I need to look up a record and use it as a 'Control Source' for a report

我的情况是我需要为报告添加一个额外的名称。我需要的名称必须与特定的员工 ID 相匹配。

我读到我可以使用 =DLookup() 来执行此操作,但我遇到了问题。 这是我目前解决这个问题的尝试。

我设置了一个名为 [EE 查询] 的查询,其内容为

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"

不知道哪里错了

此外,如果这对我的报告有帮助,请记住,此处的 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];

[升级][Employees][Titles]都是表格。 访问 2010

这里有两种不同的解决方案

解决方案 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 和接口时,存在根本区别 (:-():第一种情况下参数之间的分隔符是逗号 (,),第二种情况下是分号 (;).

我没有解决实际问题,但我更改了我的数据库设计,以便更容易在访问中使用。

为此,我为 EE 和 TSE 类型的员工创建了一个单独的 table,以便我可以轻松地将每个人的姓名包含在我的报告的记录源中。然后,我将所需的框设置为 EE 名称现在可用的控制源字段。