Bueno, vamos allá.
Es un tanto royo, pero funciona.
// Limpio la lista de STRING que pudiese existir
Query.SQL.Clear;
// Compongo la SQL en su cuerpo principal
Query.SQL.Add('SELECT RO.NumOrd_RegOfe,RO.Varord_RegOfe,RO.Estado_RegOfe,');
Query.SQL.Add('RO.AnyoReg_RegOfe,RO.TitOfe_regOfe,RO.NomCli_RegOfe,RO.NumObr_RegOfe,');
Query.SQL.Add('RO.FecOfe_RegOfe,RO.FecCon_RegOfe,RO.ImpCon_RegOfe,RO.ImpOfe_RegOfe,');
Query.SQL.Add('RO.DesAct_RegOfe');
Query.SQL.Add('FROM RegOfertas RO');
Query.SQL.Add('WHERE');
Query.SQL.Add('(RO.FecCon_RegOfe >= :EditFechaInicio)');
Query.SQL.Add('AND');
Query.SQL.Add('(RO.FecCon_RegOfe <= :EditFechaFinal)');
/* Aqui es donde empiezas como tu quieres a realizar a medida dicha SQl dependiendo de algunos valores
de los Edits */
// Compruebo que tengan valor los edits y lo meto en la SQL
// ya que establecer estos otros parametros es opcional al usuario
// En este caso compruebo hasta el contenido de 4 edits
if EditApenom_cli.text <> '' then
begin
Query.SQL.Add('AND');
Query.SQL.Add('(RO.NomCli_RegOfe LIKE ("%' + EditApenom_cli.text + '%"))');
end;
if EditTitulo.text <> '' then
begin
Query.SQL.Add('AND');
Query.SQL.Add('(RegOfertas.TitOfe_RegOfe LIKE ("%' + EditTitulo.text + '%"))');
end;
if EditEstOfer.text <> '' then
begin
Query.SQL.Add('AND');
Query.SQL.Add('(RegOfertas.Estado_RegOfe LIKE ("%' + EditEstOfer.text + '%"))');
end;
if EditDesActividad.text <> '' then
begin
Query.SQL.Add('AND');
Query.SQL.Add('(RegOfertas.DesAct_RegOfe LIKE ("%' + EditDesActividad.text + '%"))');
end;
// Abro la consulta una vez establecida la String de la SQL
Query.Open;
La propiedad del dataset Query.ParamCheck la estableces a False.
Creo que con esto te funcionará, espero no haber olvidado nada.
Suerte.
