【问题标题】:calling a query from a report textbox从报告文本框中调用查询
【发布时间】:2013-10-04 08:14:58
【问题描述】:

我有一份基于许多不同查询的报告。大多数查询使用行的 customerID 文本框的值作为键来从其他字段中提取特定数据。

这是我对其中一个文本框的 Control Source 属性所做的:

=DLookUp([Level],[qryLevel],[Me].[customerID])  

这是 qryLevel 的 SQL:

SELECT TOP 1 Level, myDate FROM sometable WHERE custID=Me.customerID ORDER BY myDate DESC  

qryLevel 在独立测试时工作,但 DLookUp 函数似乎无法正常工作,因为 Access 提供了一个对话框,询问每个参数,然后输出 #NAME?在对话框中没有输入值时在文本框中。

如何让这些文本框中的每一个从单独的查询中输出其自己的结果?

【问题讨论】:

    标签: ms-access vba ms-access-2010


    【解决方案1】:

    DLookup 函数参数必须都是字符串:http://allenbrowne.com/casu-07.html

    所以对于前两个参数,只需用双引号将它们括起来。

    对于最后一个参数,文档说它等同于 SQL where 子句,没有单词“where”。实际上,由于您只从查询中返回一条记录,您可能根本不需要最后一个参数:

    =DLookup("[Level]", "[qryLevel]")
    

    虽然,我看不出qryLevel 是如何作为独立查询工作的,因为它引用了Me,这意味着一个容器对象。最好表达为:

    SELECT TOP 1 Level, myDate
    FROM sometable
    WHERE custID = [Forms]![MyForm]![customerID]
    ORDER BY myDate DESC
    

    ...它可以在任何上下文中工作——在表单内部或外部。

    【讨论】:

    • 谢谢。 +1 试图提供帮助。这是一份总结所有活跃客户的报告。对于每个客户,有一行由许多字段组成。由于这些字段是从 6 个不同的表中提取的,我认为在几个查询中而不是在 100 多行复杂的嵌套 SQL 中管理代码会更容易。因此,Me 将引用给定客户的特定行,而 customerID 是每行中字段的名称。这对您的答案有何影响?
    • @CodeMed 的答案是一样的 :-) 但我会建议你,最后,如果你创建一个包含你需要的所有数据的单个查询并绑定,它会变得更容易你的报告,而不是做DLookups 从多个来源收集数据。另外我会说正确格式化查询。一个格式良好的 SQL 查询被分解成多行比一个被压缩成一个巨大的行要容易得多。
    • WHERE custID = [Reports]![MyReport]![customerID] 表示报告只有一个 customerID。报表中有许多 customerID,报表中的每一行数据对应一个。因此,它需要引用它被调用的特定行,这就是我在我的连续形式中所做的。如何在此处引用给定行的 customerID?
    • Access 修改了 SQL 代码,因此无法在 Access 界面中保留任何漂亮的 SQL 格式。另外,我不是 SQL 专家,而且在这个数据库上工作的其他人都不是 SQL 专家,因此将代码保存在不同的模块中将使其可维护。 customerID 的容器是查询中的一行,它定义了报告中每一行的前几个字段。也许我在这里没有工作,因为调用文本框不在同一个查询中,即使它与查询中的行之一在同一行中。那么我们用什么名字来指代容器行呢?
    • @CodeMed 我看到你受到一些限制。而且你也有一些误解。第一个问题:[Reports]![MyReport]![customerID]not 仅暗示一个客户 ID。它指的是报告中显示的当前客户 ID。 Access 中的报表和表单具有正在显示的当前 记录的概念。如果您在报告/表单的上下文中编写代码,您可以使用[Me]![FieldName] 来引用当前值。但是,如果您想始终在不考虑上下文的​​情况下引用该字段,我建议使用 [Reports]![MyReport]![FieldName] 表示法。
    猜你喜欢
    • 2021-01-01
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多