Ver Mensaje Individual
  #8  
Antiguo 15-11-2006
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Reputación: 23
AzidRain Va camino a la fama
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; // Es necesario asegurarse que queda en blanco
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
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita