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.
(只是为了从未回答的问题列表中删除这个问题)
\n\n来自评论:
\n\n\n\n好吧,我粗略地检查了那里发生的情况,但我仍然不确定调用Prepare(据我所知,这对您来说毫无用处)是否是触发预处理的最低要求。不过,\n 预处理的 SQL 会发送到 DBMS,您可以通过文本访问\n属性(此类属性的名称相当不常见)访问该 SQL。\xe2\x80\x93 TLama 2014 年 2 月 21 日 8:18
\n
| 归档时间: |
|
| 查看次数: |
2274 次 |
| 最近记录: |