MS Access - #Name? DLookup出错(表单上的文本框,查询查找)

时间:2016-08-03 13:37:11

标签: ms-access

我在处理MS Access数据库方面遇到了一些问题。我会尝试尽可能多地提供详细信息。我的所有SQL代码都是MS Access为我生成的。

首先,我有一个查询,告诉我一个人投入项目工作的时间 -

SELECT Functions.f_Person, Sum(Functions.f_Hrs) AS SumOff_Hrs
FROM Functions
GROUP BY Functions.f_Person;

f_Person是组合框中的文本(链接到'员工'表中的e_person,这是主键),f_Hrs& Sumoff_Hrs是数字。我意识到我没有使用该主键的最佳实践。该数据库将在概念验证后重建。

通过此查询,我创建了第二个查询,该查询获取了所有人的合同时间并减去了之前的总数 -

SELECT q_TotalHrs.f_Person, Employees.e_Hrs, q_TotalHrs.SumOff_Hrs, [Employees]![e_Hrs]-[q_TotalHrs]![SumOff_Hrs] AS HrsAvailable
FROM Employees, q_TotalHrs
GROUP BY q_TotalHrs.f_Person, Employees.e_Hrs, q_TotalHrs.SumOff_Hrs, [Employees]![e_Hrs]-[q_TotalHrs]![SumOff_Hrs];

这给了我一些东西 -

Person    Contract Hrs    Sumoff_Hrs    HrsAvailable
----------------------------------------------------
Ali       37              12            25
Al        37              1             36
Andy      37              1             36
Dave      37              13            24 
Gaz       37              1             36
John      37              1             36
Paul      37              6             31
George    37              2             35
Ringo     37              1             36

我还有一个表单(frm_Projects),用于创建新项目,其中包含一个子表单(frm_Functions),用于将人员添加到这些项目中。这个子表格填充了' Functions'第一个查询中引用的表。

因此用户将添加一个函数(f_Function),然后添加所需的小时数(f_Hrs)并从组合框中选择一个名称(f_Person)。子表单视图设置为“连续表单”。

现在我的问题:

我在子窗体的输入行末尾创建了一个文本框,该文本框应显示所选人员的可用小时数。在文本框属性中,我已将此代码添加到控件源 -

=DLookUp("[HrsAvailable]","[q_HrsAvailable]","[f_Person] =" & [Forms]![frm_Functions]![f_Person])

这会在表单视图中显示 #Name?错误。

我意识到这是一个常见的问题,但似乎无法使用我发现的解决方案在我自己的数据库中解决它。有人可以帮我解决这个问题吗?

-----------编辑----------------

@Andre提供的新公式

=DLookUp("[HrsAvailable]","[q_HrsAvailable]","[f_Person] =" & [Forms]![frm_Projects]![frm_Functions].[Form]![f_Person])

1 个答案:

答案 0 :(得分:1)

我说你需要

Forms!frm_Projects!frm_Functions.Form!f_Person

假设frm_Projects上的子表单控件(!)与其源表单具有相同的名称,即frm_Functions。这通常是这种情况,但不是强制性的。

修改

如果您仍然更改了组合框名称,那么

Forms!frm_Projects!frm_Functions.Form!cbx_Person

因为我现在意识到f_person是一个字符串,所以你需要在参数周围加上单引号:

=DLookUp("[HrsAvailable]", "[q_HrsAvailable]", 
         "[f_Person] = '" & [Forms]![frm_Projects]![frm_Functions].[Form]![f_Person] & "'")