【问题标题】:Passing report values to a query将报表值传递给查询
【发布时间】:2011-02-27 19:26:47
【问题描述】:

我是 Microsoft Access 的新手,因为我的背景主要是 .NET。我确定我要完成的工作非常简单,但我需要一些指导。我有一份报告和一个查询。该查询基于单个数值条件返回单个数值。

从 id = [topic] 的表中选择总计

我在我的报告中放置了一个文本框,这样我就可以将 id 提供给这个查询,然后得到总数。看起来 DLookUp 是我想要的,但无论我如何构建它,当我运行报告时,我都会在文本框中得到一个“#Error”。

目前我的 DLookUp 看起来像这样(为了简单起见,我现在只是硬编码):

=DLookUp("[total]","myquery","[topic] = 3")

如何将报表字段中的值传递给查询,以便返回查询的单个数值?

谢谢。

【问题讨论】:

  • 查询是否返回报表中显示的记录总数?如果是这样,您真的不需要查询,或者根本不需要 DSum() 或 DLookup() - 您只需在报表的页脚中添加 Sum()。

标签: ms-access ms-access-2007


【解决方案1】:

如果您有一个名为 myquery 的查询,带有一个名为 topic 的参数:

Select total from table where id = [topic]

您可以将 myquery 更改为:

Select total from table;

那么你的 DLookUp 可能是这样的:

=DLookUp("[total]","myquery","id = 3")

但是,在这种情况下 myquery 并没有多大用处。您可以直接对表格进行 DLookUp。

=DLookUp("[total]","table","id = 3")

如果您想替换文本框中的值而不是 3,txtId,请尝试以下方式:

=DLookUp("[total]","myquery","id = " & Me.txtId)

顺便说一下,table 不是一个好的表名选择。见Problem names and reserved words in Access

【讨论】:

    【解决方案2】:

    查询返回单个值,所以不需要where语句,所以:

     =DLookUp("[total]","myquery")
    

    如果你想跳过查询,你也可以使用 DSum 或 DCount,那么你需要一个 where 语句。当您使用与选定字段同名的控件时,会出现另一个奇怪的问题。

    编辑重新评论

    假设您有一个查询,AQuery:

     SELECT ID, AField FROM ATable 
    

    你可以说:

     =DLookUp("Afield","AQuery","ID=" & [ANumericReportField])
    

    或者

     =DLookUp("Afield","ATable","ID=" & [ANumericReportField])
    

    你也可以说:

     =DSum("ANumericField","ATable","ATextField='" & [ATextReportField] & "'")
    

    【讨论】:

    • 如何将报告中的条件值传递给查询?
    • 这有点难说,因为我不确定topic 的来源,或者您的查询返回什么,但我会添加一个一般性说明。
    猜你喜欢
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多