我正在尝试使用 FireDAC 中的宏来预处理我的 SQL 查询。我在数据模块上有一个 TADQuery 对象,其 SQL 设置为:
Select * from MyTable
join OtherTable on MyTable.Key = OtherTable.Key
&Where
然后在我的代码中我这样做:
WhereClause = 'stuff based on my form';
Query.MacroByName('Where').AsRaw := WhereClause;
Query.Open;
这对于复杂的查询非常有用,因为它可以让我使用 SQL 属性编辑器确保我的字段和连接条件是正确的。
我的问题是 SQL 语句由于我的 where 子句而最终无效。 有什么方法可以查看要执行的预处理后的 SQL 吗?现在我正在捕捉 FireDac 错误并显示 EADDBEngineException 对象上的 SQL。但是,这仍然显示了我的原始 SQL 和宏。如果在错误发生后我无法解决它,无论如何都要强制执行宏替换,这样我就可以查看调试器中的 SQL 来帮助我了解问题所在。
如果这很重要,我将连接到 MS Access 数据库,目标是在不久的将来迁移到 SQL Server。