【问题标题】:Limit # of records returned based on a form control限制基于表单控件返回的记录数
【发布时间】:2013-08-25 21:47:11
【问题描述】:

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

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

..但这没有用。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      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)
      

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

      【讨论】:

      • 好的,感谢您让我知道我只能在 VBA 中执行此操作。我确实把它移到了那里,它正在工作。
      猜你喜欢
      • 2021-07-10
      • 1970-01-01
      • 2014-02-11
      • 2018-05-25
      • 1970-01-01
      • 2010-09-05
      • 2011-05-28
      • 2010-11-05
      • 2016-04-16
      相关资源
      最近更新 更多