【问题标题】:Access Report #Error Text Message访问报告#Error 文本消息
【发布时间】:2017-07-25 16:59:22
【问题描述】:

我正在尝试在 Access 中构建一个摘要报告,其中包含一些基于每日查询的自定义统计信息。但是,我遇到了一些困难。当我使用根据所述查询构建的报告时,无论公式如何,我都会得到相同的确切数字。

我正在构建一个公式来计算字段中的文本值或计算字段中的所有响应,但该公式将始终返回 18 作为值(记录总数),即使我知道它对于公式。或者,我将创建一个空白报告,无论我做什么都会收到#Error 或#Name?文本框中的值。我已经检查过,控件中的名称不是公式或其他任何地方的任何名称 - 我通常将其重命名为 Text0 或 Demo。

我一直在尝试使用的公式是

=Count(IIf([Daily_Numbers_Query].[Signed_Card] Is Not Null,1,0));

Daily_Numbers_Query 指的是查询,而 Signed_Card 指的是我想从该查询中检查的字段。我希望它告诉我 Signed_Card 具有值且不为空的记录数。

任何帮助将不胜感激。

【问题讨论】:

    标签: ms-access ms-access-2016


    【解决方案1】:

    你说查询是在报表的RecordSource中,那么只需要使用正确的false返回即可。另外,可能不需要查询名称前缀。

    =Count(IIf([Signed_Card] Is Not Null, 1, Null))

    =Count(IIf(Not IsNull([Signed_Card]), 1, Null))

    =Sum(IIf([Signed_Card] Is Not Null, 1, 0))

    【讨论】:

    • 像魅力一样工作,谢谢!这周我花了大约 12 个小时来解决这个问题——简直不敢相信它这么简单。
    【解决方案2】:

    Count是SQL中的聚合函数,但不能直接在表达式中使用。

    为此,您使用域函数:DCountDSum、...

    在这种情况下,最简单的方法是:

    =DCount("*", "Daily_Numbers_Query", "[Signed_Card] Is Not Null")
    

    如果你想使用IIf,你必须使用DSum

    =DSum(IIf([Daily_Numbers_Query].[Signed_Card] Is Not Null,1,0))
    

    【讨论】:

    • SQL 聚合函数可以在表达式中使用。建议的 DSum 语法不正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多