Ver Mensaje Individual
  #2  
Antiguo 18-04-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Que tal sorianolloret

Una consulta SQL parametrizada desde Delphi, es mas o menos asi


Código Delphi [-]
  with TADOQuery.Create(NIL) do
  begin
    // Connection := Acordate de asignar tu componente de ADOConnection!
    SQL.Text := ' SELECT DISTINCT Anio, IdCondiciones, DNI FROM tbcalendario WHERE ' +
                      ' (IdCondiciones = :Condiciones) AND (DNI = :DNI) ';

    with Parameters do
    begin
      // Aca asignas valor a los parametros. Podes usar variables, costantes, un valor de un campo..      
      ParamByName('Condiciones').Value := adodatasetresultadoparcial.FieldByName('IdCondiciones').AsString:
      ParamByName('DNI').Value := adodatasetresultadoparcial.FieldByName('DNI').AsString;  
    end;

    Open; 
  end;

Definir un parametro en una consulta SQL es tan sencillo como anteponer dos puntos a un identificador que será el nombre del parametro que se usa mas adelante para darle valor

En el ejemplo, :Condiciones es uno de los parametros, :DNI es el otro

Notese que nada tiene que ver el nombre del parametro con el nombre del campo

Una de las grandes ventajas de los parametros es que no hay que andar preocupandose por convertir o adaptar los valores de las consultas para que no den error (siempre pasa con los tipos "raros" como fechas, moneda, etc) todo ese trabajo se encarga el motor, uno simplemente suministra una fecha como parametro y el motor se encargará de darle el formato adecuado

Siguiendo con el ejemplo, para filtrar la consulta usando fechas seria algo como esto:

Código Delphi [-]
  with TADOQuery.Create(NIL) do
  begin
    // Connection := Acordate de asignar tu componente de ADOConnection!
    SQL.Text := ' SELECT DISTINCT Anio, IdCondiciones, DNI FROM tbcalendario WHERE ' +
                      ' (IdCondiciones = :Condiciones) AND (DNI = :DNI) ' + 
                      ' AND Fecha BETWEEN :Desde AND :Hasta ';

    with Parameters do
    begin
      // Aca asignas valor a los parametros. Podes usar variables, costantes, un valor de un campo..      
      ParamByName('Condiciones').Value := adodatasetresultadoparcial.FieldByName('IdCondiciones').AsString:
      ParamByName('DNI').Value := adodatasetresultadoparcial.FieldByName('DNI').AsString;  
      ParamByName('Desde').Value := DateTimePickerDesde.Date;
      ParamByName('Hasta ').Value := DateTimePickerHasta .Date;
    end;

    Open; 
  end;

Espero te sirva, saludos
Responder Con Cita