MS-ACCESS - 使用 DLookup 的返回值作为计算的一部分



请不要笑。 我相信这对你们所有人来说都很简单,但作为一个新手,我需要帮助。

我有一个包含子窗体的发票表单。 子窗体允许用户选择产品和数量。

对于所选的每个产品,用户输入数量,并自动计算小计。 这部分很好。

我的问题是,当我想在子窗体的页脚中提供总总数时,我只得到 0.00 英镑。

以下是详细信息: 字段 1 称为"单价"。 此单价是使用 DLookUp 找到的。 公式为"=DLookUp("[Price]","[tblCashPrices]","[ProductID]=" & [Product] & "AND [SalesTypeID]=" & [Forms]![tblInvoice1]![销售类型 ID](">

这会自动填充,似乎很好。

字段2 称为"数量",只是一个数字字段,用户可以在其中输入整数。

在子窗体中,我想生成总计。 我试过"=总和([数量] * [单价](" 这只是返回 0.00 英镑。

我不知道发生了什么,因为我的产品小计有效,但总体汇总无效?

请帮忙

聚合函数必须引用用作 RecordSource 格式的表或查询中的字段,而不是计算控件。

在表单上检索相关数据时比 DLookup(( 更好的选项。

  1. 以 RecordSource 的格式包含查找表,连接类型:"包括来自 tblIninvoice 的所有记录,并且仅包括来自 tblCashPrices 的匹配记录。

  2. 产品的多列组合框,
  3. 价格可以在隐藏列中,然后文本框可以按索引引用组合框列

选项 1 将允许 Sum(( 函数引用价格字段。(可选(在查询中执行 DLookup(( 计算,并将其用作 RecordSource 形式。然后,可以在 Sum(( 计算中引用计算字段。请注意,域聚合在查询或文本框中可能执行缓慢。

另一种选择是在表中创建一个字段来存储价格。然后使用代码(宏或 VBA(执行 DLookup 并将检索到的值保存到该字段中。

此外,您的 DLookup(( 在 WHERE 参数中存在语法错误。AND的每一侧都需要空间。

在 Sum(( 计算更新之前,必须将记录提交到表中。记录在以下情况下提交:1.关闭表/查询/表单;或 2.移动到另一个记录;或 3.运行代码进行保存。

相关内容

最新更新