PDA

Ver la Versión Completa : Pasar parametros a SQL por medio DE Tquery


JELIRM
28-06-2005, 00:22:41
Hola,
Tengo un formulario donde tengo mi reporte con sus respectivos componentes, QuickRep su Query1 y
su respectivo Datasource. en mi Query1 en su proiedad SqL
tiene el siguiente código Sql .

Select fecha,nombre,edad from mitabla

Mi reporte es funcional; pero lo que quiero hacer ahora es meterle parametros al query1 como por ejemplo quiero desde un miniformnulario que se
cargue previo al reporte darle un rango de fecha por ejemplo que me muestre la consulta con los campos descritos en la consulta anteriror con la condicion que sean de fecha 01-01-2005 al 03-01-2005.


Las caidas hacen aprender.

--Saludos.

vtdeleon
28-06-2005, 00:27:34
Saludos
Puedes usar la Clausura Where Select fecha,nombre,edad from mitabla
where fecha between #01/01/2001# and #02/02/2000#Suerte

roman
28-06-2005, 00:27:43
Por ejemplo


Select fecha,nombre,edad from mitabla
where fecha between :fecha_inicial and :fecha_final


Antes de abrir la consulta sustituyes los parámetros con



Query1.ParamByName('fecha_inicial').AsDate := fechaInicial;
Query1.ParamByName('fecha_final').AsDate := fechaFinal;


donde fechaInicial y fechaFinal serían dos variables de tipo TDate con los valores adecuados.

// Saludos

vtdeleon
28-06-2005, 00:31:26
Por Segudos :D

Raptor
28-06-2005, 00:34:22
Saludos.

una posible sobucion es crear un procedure dentro del formulario del reporte mas o menos asi :

procedure Tform1.LoadRpt(Const Fecha:TDate;aPrint:boolean=false);
Const
aConsulta = 'Select * From Cliente Where fecha = "%s" ';
begin

With MiQuery do begin
Close;
Sql.Add(format(aConsulta,[formatdatetime('mm/dd/yyyy',Fecha)]));
open;
if ismpty then begin
Close;
Showmessage('Registro no encontrado...');
exit;
end;


if aprint then
quickrpt.print
else quickrpt.preview;

//--[Suerte espero aberte ayudado... :D ]--

end;

end;

Neftali [Germán.Estévez]
28-06-2005, 09:18:42
TAG's:

delphi (entre corchetes)
...
/delphi (entre corchetes)

...no es tan difícil...:D:D:D:D
(de buen rollo eh!!!!)

JELIRM
29-06-2005, 19:45:20
pongo la instruccion Sql en la propiedad del Query1
Select fecha,nombre,edad from mitabla
where fecha between :fecha_inicial and :fecha_final

y luego al ir a poner a True la propiedad Active del Query me da el siguiente
error textual "query1:Field 'fecha_inicial'is of an unknow type

roman
29-06-2005, 19:59:45
No soy marcoszorrilla y pregunto, ¿leiste esta parte?


Antes de abrir la consulta sustituyes los parámetros con


Query1.ParamByName('fecha_inicial').AsDate := fechaInicial;
Query1.ParamByName('fecha_final').AsDate := fechaFinal;



// Saludos

JELIRM
29-06-2005, 20:46:52
Hola, Disculpa, pero esque estaba con otro hilo sobre otro tema con marcoszorrilla, y si lei esa parte;y no era el problema pero ya lo resolvi, este consistia en que no se habia definido el tipo de datos para el params que es este caso era FechaInicial y fechaFinal. estos los defini en la propiedad params del Tquery luego te aparecen por defecto los dos parametros que definistes en la instruccion sql: FechaInicial y Final y al posiionar el puntero me despliega nuevas propiedades entre ellas DataType y alli se las defini.
Lo que tu me decias que si ya habia leido la parte que me hicistes enfasis de tu respuesta es cuando ya voy a pasar el parametro y claro este debe ser igual alque se le define en la propiedad que ya te mencione.
eso era todo.>>

Gracias por tu ayuda que fue de gran soporte.
ha y disculpa por la confusion el errar es de humanos...

Saludos,

El que persevera alcanza

roman
29-06-2005, 20:51:25
:confused: Pues es raro. La definición del tipo de datos del parámetro no debería ser necesaria ya que AsDate se encarga precisamente de indicar que el tipo es DateTime.

// Saludos