Ms access 表格中的引用

Ms access 表格中的引用,ms-access,reference,Ms Access,Reference,我在microsoft access中有两个表单,一个叫做Bill,另一个叫做Payment。在这两种形式中,它们都有totalamount作为字段。我正试图将账单总金额与付款总金额进行对比 我已尝试在付款总额控制源:=表单!账单![总金额] 但这似乎不起作用。在设计视图中,文本框中显示“#名称” 你会怎么做 这两个表单中有一个是子表单吗?如果是,则需要引用子窗体控件或父属性: Me.Parent.[Total order] Me.[Subform Control name Here].form

我在microsoft access中有两个表单,一个叫做Bill,另一个叫做Payment。在这两种形式中,它们都有totalamount作为字段。我正试图将账单总金额与付款总金额进行对比

我已尝试在付款总额控制源:=表单!账单![总金额]

但这似乎不起作用。在设计视图中,文本框中显示“#名称”


你会怎么做

这两个表单中有一个是子表单吗?如果是,则需要引用子窗体控件或父属性:

Me.Parent.[Total order]
Me.[Subform Control name Here].form.[Total order]
请注意,子窗体控件名称并不总是与包含的窗体相同

编辑:要么省略我,要么使用表单!控件中的FormName

EDIT2:请注意,引用表单、子表单和控件的常用方式是使用bang(!)或dot(.)。括号和引号很少使用。正如Knox所提到的,这可以在Microsoft Access MVPs站点()和Microsoft自己的站点()中看到

如果没有,您是否尝试过表达式生成器?这将有助于确保您拥有正确的姓名


另外,最好避免在字段和控件的名称中使用空格,这样可以节省大量工作。另外,最好重命名控件,使其与所包含的字段名称不同,例如TXTORDOTALL。

Remou的答案仅在代码中有效-但是看起来您正在定义文本框的控件源,因此请尝试以下操作:

=Forms("Bill")![Total order]

我最喜欢的解决方案是始终返回记录集并计算相应的总计,因为您并非总是确保表单级别的总计得到正确更新(可能出于任何原因始终存在挂起的控件/记录集更新)。然后您就可以使用DSUM和相关功能了

例如:

dsum(Forms("Bill").recordsource, "unitPrice*lineQuantity")
当然,您可能有更复杂的解决方案,例如定义一个临时记录集来获取每张发票的总金额

Dim rs as DAO.recordset, _
    myBillNumber as variant, _
    myBillAmount as variant

set rs = currentDb.openRecordset(_ 
    "SELECT billNumber, sum(unitPrice*lineQuantity) as totalPrice FROM " & _
    Forms("Bill").recordset.name " GROUP BY billNumber")

myBillNumber = rs.fields(0)
myBillAmount = rs.fields(1)

它可能看起来很复杂,但一旦你习惯了它,你就会毫不犹豫地使用它,你也永远不会遇到你现在面临的那种问题。

Remou的答案是正确的;查看有关引用控件的microsoft文档可能会很有用:虽然答案中的Me部分仅适用于代码,但有关子窗体的注释适用于控件源。无需使用表格(“账单”)。形式!比尔可以填一张填好的表格。