Foxpro哪里表达无效?

时间:2012-09-24 21:41:58

标签: sql where foxpro visual-foxpro

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')"等。

我试图从一张桌子上打印一些帖子(数字大于1)。

3 个答案:

答案 0 :(得分:10)

在变量前使用&展开它:

lcVillkor1 = "table.numbers > 1"

SELECT * FROM table WHERE &lcVillkor1 ORDER BY table.numbers

答案 1 :(得分:1)

您不能只将变量名放在一行代码中并让它执行。相反,将SQL命令构建为文本变量,然后使用宏替换等方法执行它:

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

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

答案 2 :(得分:0)

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

lcVillkor1 = "table.numbers > 1" 
lcSql = "SELECT * FROM table WHERE " + lcVillkor1 + " ORDER BY table.numbers"
EXECSCRIPT(lcsql)