定义个全局变量。
sSQl :String;ssql := 'SELECT * FROM wdwdwd';在调用的地方,定义一个局部变量,SqlText;SqlText := ssql + ' WHERE .....'QUery.Sql.Text := SqlText;

解决方案 »

  1.   

    用 Format 函数
    sSql:='select * from table where %S order by %s';
    Query.sql.text:=Format(sSql,['f1=1 and f2=2','f3'])
      

  2.   

    query 的sql 是存放在 strings中的
    看看Tstrings是如何操作的 ,即可满足你的要求
      

  3.   

    先找到WHERE在TSTRINGS的行数, 
    然后把后面的内容替代!
      

  4.   

    var
      StrTemp: WideString;
      iRet: Integer;
    begin
      try
        StrTemp:='select a.*,b.* from a,b where 1=1'
        if meDate.Text<>'' then StrTemp:=StrTemp+' and a.ID='+''''+meDate.Text+'''';
        if ......    Query1.Sql.Add(StrTemp);
        Query1.Open;
    end;
      

  5.   

    楼上的有理,用SQL.CLEAR;SQL.ADD来改变SQL语句,不是很麻烦的,你可以试试!
      

  6.   

    使用参数!
    Parameter,随便找本书都有讲。