我有一个基于许多不同查询的报告。大多数查询使用行的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?在没有值输入到对话框中的文本框中。
如何让每个文本框从单独的查询中输出自己的结果?
答案 0 :(得分:2)
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
...可以在任何情境中使用 - 在表格内部或外部。