0

我有一份基于许多不同查询的报告。大多数查询使用行的 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? 当对话框中没有输入值时,在文本框中。

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

4

1 回答 1

2

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

因此,对于前两个参数,只需将它们括在双引号中。

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

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

虽然,我看不出如何qryLevel作为独立查询工作,因为它指的是Me意味着容器对象。更好地表达为:

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

...这将在任何上下文中工作——在表单内部或外部。

于 2013-10-04T00:14:58.547 回答