vb6 和 SQL 中的查询字符串语法错误



我无法弄清楚这段代码的哪一部分写错了。

在我的查询字符串中,我正在尝试收集 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
  1. 不能有多个 WHERE 子句。
  2. 我希望您的sFilter包含是非常错误的,但这取决于确切的值是多少。
  3. sFromsTo作为文字包含在内,而不是评估(参见tcarvin的答案)
  4. WHERE条款的每个部分都需要完整和完整。您不能省略要检查的字段(请参阅Darrel的答案)

您不能在<之前删除control_no>

sQuery = "SELECT " & sFields & " FROM " & sTable & " Where store_id Like 'XXX'" & sFilter & " Where control_no > sFrom and control_no < sTo " & order by " & sOrderBy
  1. Like 'XXX'" & sFilter中,X ' 和下一个字符串之间没有空格。
  2. 您根本没有行继续符。
  3. 您有两个 Where 子句。
  4. sFromsTo 是文本字符串。您可能打算将它们用作变量。
  5. control_nosTo之间没有可比性.
  6. sFilter 和周围的 SQL 之间没有语句。
  7. 您在 order by 之前没有双引号。
  8. 就像样式选择一样,SQL 关键字的大小写不一致。

现在,把它们放在一起:

sQuery = "SELECT " & sFields & " FROM " & sTable & _
         " WHERE store_id LIKE 'XXX'" & _
         " AND " & sFilter & _
         " AND control_no > " & sFrom & _
         " AND control_no < " & sTo & _
         " ORDER BY " & sOrderBy 

最新更新