我在delphi中编写了一个带有参数
的SQL查询WHERE L1.IdListino = :IdListino
基于用户的一些输入,我希望此参数是表单的字段(tParsIdListinoExport是字段的名称),或者是另一个表的列(类似于WHERE L1.IdListino = fat.IdListino) )。
if tParsIdListinoExport.AsString <> '' then
qSel.ParamByName( 'IdListino' ).AsString := tParsIdListinoExport.AsString
else
qSel.ParamByName( 'IdListino' ).Value := 'fat.IdListino';
end;
可悲的是,看起来我无法插入列名作为参数,因为它在列的名称周围添加了'',因此将其视为纯文本。 是否可以从参数中删除''? 非常感谢,
的Fabio
答案 0 :(得分:3)
您需要在运行时创建SQL指令,例如:
with qSel do
begin
Close;
SQL.Clear;
SQL.Add(addYourSqlHere, without Where clause);
if Condition1 then
SQL.Add('where FIELD1 = :PARAM01')
else
SQL.Add('where FIELD2 = :PARAM01');
ParamByName('PARAM01').Value := UserFilter;
end;
答案 1 :(得分:0)
您可以通过sql实现所需。细节有点依赖于RDBMS,但有点像
where(:param1 =&#39; use_field&#39; and:param2 = OtherTable.field)或 (:param1 =&#39; use_param&#39;和Table.field =:param3)
这假定Table
和OtherTable
已加入。
它还假设Param1
可以被多次提及 - 并非所有数据库都允许这样做。