2016-08-03 42 views
1

我遇到了一个与我正在处理的MS Access数据库有关的问题。我会尽力给予尽可能多的细节。我所有的SQL代码都是MS Access为我生成的。MS Access - #Name? DLookup上的错误(窗体上的文本框,查询查询)

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

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)的新项目用于向这些项目添加人员。此子表单填充第一个查询中引用的“函数”表。

因此,用户将添加一个函数(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

http://access.mvps.org/access/forms/frm0031.htm - 您需要Forms!Mainform!Subform1.Form!ControlName – Andre

+0

Hi @ Andre对此表示感谢。看起来像一个很好的资源。尽管如此,我仍然在努力处理公式的布局。我试了一堆组合。它应该看起来像 - ...&[Forms]![frm_Projects]![Subform1]。[frm_Functions]![cbx_Person])? – Jamsandwich

回答

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] & "'") 
+0

再次嗨。我编辑了上面的公式编辑在我的问题。这现在给我'#Error',这可能是一个改进。我不知道我在想什么 – Jamsandwich

+1

*亲爱的日记!今天我从#Name进步了吗?到#Error!* :) - 请参阅编辑。 – Andre

+0

绝对!是的,单引号是一种享受。这正是我需要的。令我困扰的是,我仍然可能会错过看起来应该很简单的事情。尽管刚刚开始使用Access。我会学习,并且是一种将自己融入SQL的好方法。谢谢@Andre – Jamsandwich