FireDAC - 在宏扩展后显示SQL

Mar*_*der 5 delphi delphi-xe3 firedac

我试图在FireDAC中使用宏来预处理我的SQL查询.我在数据模块上有一个TADQuery对象,其SQL设置如下:

Select * from MyTable
  join OtherTable on MyTable.Key = OtherTable.Key
&Where
Run Code Online (Sandbox Code Playgroud)

然后在我的代码中我这样做:

WhereClause = 'stuff based on my form';
Query.MacroByName('Where').AsRaw := WhereClause;
Query.Open;
Run Code Online (Sandbox Code Playgroud)

这对于复杂的查询非常有用,因为它允许我使用SQL属性编辑器确保我的字段和连接条件是正确的.

我的问题是由于我的where子句导致SQL语句失效. 有没有办法在预处理之后看到要执行的SQL?现在我正在捕获FireDac错误并显示EADDBEngineException对象上的SQL.但是仍然显示我的原始SQL与宏.如果我在错误发生后无法访问它,那么无论如何都要强制进行宏替换,这样我就可以查看调试器中的SQL来帮助我查看错误.

如果重要,我将连接到MS Access数据库,目标是在不久的将来转移到SQL Server.

Nas*_*hev 1

(只是为了从未回答的问题列表中删除这个问题)

\n\n

来自评论:

\n\n
\n

好吧,我粗略地检查了那里发生的情况,但我仍然不确定调用Prepare(据我所知,这对您来说毫无用处)是否是触发预处理的最低要求。不过,\n 预处理的 SQL 会发送到 DBMS,您可以通过文本访问\n属性(此类属性的名称相当不常见)访问该 SQL。\xe2\x80\x93 TLama 2014 年 2 月 21 日 8:18

\n
\n