有没有办法根据文本框中的用户输入来限制查询中返回的记录数?我知道如果记录数不变,我可以使用最高值,但这个数字会改变。我试过了:
SELECT TOP[Forms![frm_GenerateMailout]![MailoutSize]]
..但这没有用。
有没有办法根据文本框中的用户输入来限制查询中返回的记录数?我知道如果记录数不变,我可以使用最高值,但这个数字会改变。我试过了:
SELECT TOP[Forms![frm_GenerateMailout]![MailoutSize]]
..但这没有用。
“有没有办法根据用户在文本框中的输入来限制查询中返回的记录数?”
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)
还有其他的可能性。如果我们的建议都不适合您的情况,请告诉我们您需要在何处以及如何使用该查询。
这取决于您使用 SQL 语句的方式和位置,但如果将其构造为字符串,则需要正确连接它:
"SELECT TOP " & Forms!frm_GenerateMailout!MailoutSize & ".. etc."