No me dices que reporteador ocupas (QReport, FastReport, etc.), de todas formas cualquier descendiente de TQuery contiene la propiedad "Parameters" y el metodo ParamByName(name:string) que devuelve el parametro con el nombre especificado. Notese que no puedes poner solo ParamByName().AsString...es necesario indicar que parametro quieres accesar.
Por ejemplo: Si haces este query:
Código Delphi
[-]
FreportCliente.qryCliente.SQL.Clear; FreportCliente.qryCliente.SQL.Add(' select * from cliente where codcli=:codigoabuscar');
Delphi en automático crea el parametro "codigoabuscar" y lo agrega al Query, Por ejemplo digamos que quieres buscar el codigo de cliente 100; entonces hacemos esto:
Código Delphi
[-]
FreportCliente.qryCliente.ParamByName('codigoabuscar').AsInteger :=100;
Cuando corras el Query, Delphi en realidad genera la siguiente instruccion SQL
Código SQL
[-]
SELECT * FROM CLIENTE WHERE CODCLI=100
Es decir, sustituye el parametro que habiamos puesto por el valor que le dimos.
Si quisieras otra consulta nueva con otro numero, solo necesitas volver a cambiar el parametro con ParamByNAme..el query ya no lo tocas.
Ventajas? Te evitas esos engorros de concatenar cadenas 'select * from cli where nombre='+ mydato + ' and' + myotrodato...etc.
Además no necesitas hacer la conversion a texto para poder concatenar la instruccion ni escribir varias veces el mismo query.
Solo usas AsString, AsDateTime, AsInteger, AsCurrency, etc.. segun el tipo de datos que quieras guardar en tu parametro. Delphi hace cualquier conversion al generar la sentencia SQL
Si pones mas datos te podemos ayudar mejor