1

有没有办法根据文本框中的用户输入来限制查询中返回的记录数?我知道如果记录数不变,我可以使用最高值,但这个数字会改变。我试过了:

SELECT TOP[Forms![frm_GenerateMailout]![MailoutSize]]

..但这没有用。

4

2 回答 2

1

“有没有办法根据用户在文本框中的输入来限制查询中返回的记录数?”

Access SQL 不接受任何类型的参数SELECT TOP

不幸的是,当您尝试时,错误消息 (#3141) 并不能清楚地识别问题:

“SELECT 语句包含拼写错误或丢失的保留字或参数名称,或者标点符号不正确。”

如果您可以SELECT使用 VBA 构建,您可以通过将数字构建到字符串中,如 Andy 所描述的那样轻松解决这个问题。或者,您可以使用Replace()您的MailoutSize值替换预构建 SQL 语句中的占位符。

所以从...开始

strTemplateSql = "SELECT TOP 100 PERCENT tblFoo.*" & vbCrLf & _
   "FROM tblFoo;"

你可以这样做 ...

strSelect = Replace(strTemplateSql, "100 PERCENT", _
    Forms!frm_GenerateMailout!MailoutSize)

还有其他的可能性。如果我们的建议都不适合您的情况,请告诉我们您需要在何处以及如何使用该查询。

于 2013-08-25T22:52:20.307 回答
1

这取决于您使用 SQL 语句的方式和位置,但如果将其构造为字符串,则需要正确连接它:

"SELECT TOP " & Forms!frm_GenerateMailout!MailoutSize & ".. etc."
于 2013-08-25T21:50:01.190 回答