2
lcVillkor1 = "table.numbers > 1"

SELECT * FROM table WHERE lcVillkor1 ORDER BY table.numbers

我得到了错误 - SQL: WHERE clause is invalid

我已经尝试了几乎所有可能的组合

"table.numbers > 1", (table.numbers > 1), "(table.numbers > '1')"ETC..

我试图从表格中获取一些帖子(其中数字大于 1)以打印出来。

4

3 回答 3

10

在变量之前使用&来扩展它:

lcVillkor1 = "table.numbers > 1"

SELECT * FROM table WHERE &lcVillkor1 ORDER BY table.numbers
于 2012-09-24T23:36:51.857 回答
1

您不能只是将变量名放在一行代码中并让它执行。相反,将您的 SQL 命令构建为文本变量,然后使用宏替换之类的东西来执行它:

lcVillkor1 = "table.numbers > 1" 
lcSql = "SELECT * FROM table WHERE " + lcVillkor1 + " ORDER BY table.numbers"
&lcSql

此外,为了将来的参考,可能靠近保留字的表和字段名称——例如“表”和“数字”——可能并不理想。

于 2012-09-24T21:56:38.783 回答
0

宏替换工作正常(在前面给出的两个示例中)。如果您使用 VFP9,您还可以在构建查询字符串后使用函数 EXECSCRIPT():

lcVillkor1 = "table.numbers > 1" 
lcSql = "SELECT * FROM table WHERE " + lcVillkor1 + " ORDER BY table.numbers"
EXECSCRIPT(lcsql)
于 2012-09-26T00:37:12.733 回答