在具有2个子表单的表单中进行Dlookup(dlookup的要求在第二个子表单中)

时间:2012-11-21 13:24:35

标签: ms-access-2007

Access 2007

Form Name is: MineLocationQuery1
1st Subform name is:MineExtractionSubform
2nd Subform name is: ExtractionLineSubform2

我正在尝试使用dlookup来检查表中的值,然后将其乘以另一个值。它适用于:没有子表单和1个子表单。但是当我添加2个子表单时,我无法使其工作。

这是我到目前为止所尝试的内容

简单的表单查找有效:

=DLookUp("[Price]","[Resource]","[AtomicRef]='" & [Forms]![ExtractionLine]![AtomicRef] & "'")*[Tonnage]

以下是使用1个子表单创建的表单的工作示例:

=DLookUp("[Price]","[Resource]","[AtomicRef]='" & [Forms]![MineExtraction1]![ExtractionLineSubform]![AtomicRef] & "'")*[Tonnage]

以下是我使用2个子表单进行的多次尝试中的一次,但它无效。

=DLookUp("[Price]","[Resource]","[AtomicRef]='" & Forms![MineLocationQuery1]!MineExtractionSubform.Form!ExtractionLineSubform2.Form.AtomicRef & "'")*[Tonnage]

除了在复制和粘贴许多尝试进入值得文本框控件源并反复获取#Name错误之后感到疲倦和沮丧,我做错了什么

1 个答案:

答案 0 :(得分:1)

如果我想在主窗体的文本框中引用嵌套子窗体,我可能会说:

=[SubformControl1].[Form].[SubformControl2].[Form].[AControlName]

请注意,这使用子窗体控件的名称和Form作为对象所包含对象的引用。

所以这(为方便阅读而拆分)看起来是正确的:

=DLookUp("[Price]","[Resource]","[AtomicRef]='" & Forms![MineLocationQuery1]!
MineExtractionSubform.Form!ExtractionLineSubform2.
Form.AtomicRef & "'")*[Tonnage]

但是,很容易弄错名字。例如,您可能指的是包含的表单,而不是子表单控件名称。您可以使用表达式生成器进行故障排除,也可以在即时窗口(Ctrl + G)中逐位引用表单,以确保您的名称正确。例如:

?Forms![MineLocationQuery1].Name
?Forms![MineLocationQuery1]!MineExtractionSubform.Name

更多信息:http://access.mvps.org/access/forms/frm0031.htm

编辑重新评论

如果您在子表单2中工作,我认为在这种情况下您应该参考[atomicref]:

=DLookUp("[Price]","[Resource]","[AtomicRef]='" & [atomicref] & "'")