限制基于表单控件返回的记录数

时间:2013-08-25 21:47:11

标签: sql ms-access ms-access-2007

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

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

..但那没用。

2 个答案:

答案 0 :(得分:1)

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

"SELECT TOP " & Forms!frm_GenerateMailout!MailoutSize & ".. etc."

答案 1 :(得分:1)

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

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

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

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

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

首先......

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

你可以这样做......

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

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