我在处理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])
答案 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] & "'")