在MS Access中,我需要查找记录并将其用作“控制源”。报告

时间:2015-01-08 04:46:53

标签: sql ms-access-2010

我的情况是我需要为报告添加一个额外的名称。我需要的名称必须与特定的员工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

2 个答案:

答案 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名称的现在可用的控制源字段。