Que tal sorianolloret
Una consulta SQL parametrizada desde Delphi, es mas o menos asi
Código Delphi
[-]
with TADOQuery.Create(NIL) do
begin
SQL.Text := ' SELECT DISTINCT Anio, IdCondiciones, DNI FROM tbcalendario WHERE ' +
' (IdCondiciones = :Condiciones) AND (DNI = :DNI) ';
with Parameters do
begin
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
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
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