参数FDquery delphi不起作用

rei*_*tam 1 sql delphi parameters

我有以下delphi代码:

FDQuery1.SQL.Clear;
FDQuery1.SQL.Add('SELECT * FROM :Tablename');
FDQuery1.ParamByName('Tablename').AsString := 'tasks';
ShowMessage(FDQuery1.sql.Text);
FDQuery1.Open;
Run Code Online (Sandbox Code Playgroud)

(从这个链接中获得:http://www.delphigroups.info/2/da/237634.html)

它不起作用,因为参数未填充但保持不变.有人知道为什么没有填补?

Vic*_*ria 5

因为一般情况下,不能在SQL命令中使用参数进行表名替换.你很幸运,FireDAC支持预处理器宏来参数化SQL命令中的表名.所以你可以编写这样的例子(请注意,如果你想在代码中看到命令,那么它必须在宏预处理之后,例如在调用Prepare之后):

FDQuery1.SQL.Text := 'SELECT * FROM &TableName';
FDQuery1.MacroByName('TableName').AsIdentifier := 'tasks';
FDQuery1.Open;
Run Code Online (Sandbox Code Playgroud)

有关此类宏的详细信息,请参阅替换变量主题.