我无法弄清楚这段代码的哪一部分写错了。
在我的查询字符串中,我正在尝试收集 sFrom 和 sTo 值之间的一系列记录。基本上,我想这样做,以便在我从数据库中收集的所有控制编号中,唯一显示的将是用户输入的起始范围(sFrom)和结束范围(sTo)的任何内容。
sQuery = "SELECT " & sFields & " FROM " & sTable &
" Where store_id Like 'XXX'" & sFilter &
" Where control_no > sFrom and < sTo " &
order by " & sOrderBy
这个:
" Where control_no > sFrom and < sTo "
大概应该是这样的:
" Where control_no >= " & sFrom & " and control_no <= " & sTo
(当然,假设 sFrom 和 sTo 是用用户的数字输入填充的字符串变量)
调试它的最佳方法是查看生成的 SQL 语句是什么并从那里开始工作。
您目前的评估结果
类似于SELECT field, field2 FROM table Where store_id Like 'XXX'FilterString Where control_no > sFrom and < sTo order by field1
- 不能有多个 WHERE 子句。
- 我希望您的
sFilter
包含是非常错误的,但这取决于确切的值是多少。 -
sFrom
和sTo
作为文字包含在内,而不是评估(参见tcarvin的答案) WHERE
条款的每个部分都需要完整和完整。您不能省略要检查的字段(请参阅Darrel的答案)
您不能在<之前删除control_no>之前删除control_no>
sQuery = "SELECT " & sFields & " FROM " & sTable & " Where store_id Like 'XXX'" & sFilter & " Where control_no > sFrom and control_no < sTo " & order by " & sOrderBy
- 在
Like 'XXX'" & sFilter
中,X
' 和下一个字符串之间没有空格。 - 您根本没有行继续符。
- 您有两个 Where 子句。
-
sFrom
和sTo
是文本字符串。您可能打算将它们用作变量。 control_no
和sTo
之间没有可比性.sFilter
和周围的 SQL 之间没有语句。- 您在
order by
之前没有双引号。 - 就像样式选择一样,SQL 关键字的大小写不一致。
现在,把它们放在一起:
sQuery = "SELECT " & sFields & " FROM " & sTable & _
" WHERE store_id LIKE 'XXX'" & _
" AND " & sFilter & _
" AND control_no > " & sFrom & _
" AND control_no < " & sTo & _
" ORDER BY " & sOrderBy