从报告文本框中调用查询

时间:2013-10-03 22:42:21

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

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

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

1 个答案:

答案 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

...可以在任何情境中使用 - 在表格内部或外部。