Unidac(delphi)宏问题

时间:2013-10-07 06:48:31

标签: delphi unidac

我有疑问:

select &macro1 from table1
where &macro2

delphi代码:

macrobyname('macro1').value := 'field1 as test,field2';
macrobyname('macro2').value := 'test=1';

我收到这样的错误:

Unknown column test in where clouse
问题2)

showmessage(sql.text);结果是“select1& macro1 from table1 where& macro2”  但我希望“select field1 as test,field2 from table1 where test = 1”

如何在宏替换后获取sql.text。

(对不起英语不好)。

最好的问候, 努里

2 个答案:

答案 0 :(得分:1)

您没有说明您使用的数据库,但我使用过的数据库(SQL Server和Sybase)不允许在where子句中使用字段别名。所以你不得不说:

macrobyname('macro2').value := 'field1=1';

答案 1 :(得分:1)

标准SQL不允许在WHERE子句中引用列别名。强制执行此限制是因为在评估WHERE子句时,可能尚未确定列值。 Сolumn别名可以在ORDER BY子句中使用,但不能在WHERE,GROUP BY或HAVING子句中使用。