Ayuda con reportes por fecha

Saludos.
Estoy haciendo un programilla de llamadas, tengo varias dudas ya que estoy empezando con delphi. Tengo un problema que cuando quiero imprimir un reporte que selecciones todos los reportes que están en el rango de la fecha seleccionada, pero si tengo dos o más campos con la misma fecha o que están dentro del rango solo imprime el primero no se que este mal en el código, podrían ayudarme por favor, Gracias. El código que tengo es este:
procedure TReporteXFecha.BProcesarClick(Sender: TObject);
begin
with TLlamadas do
begin
V1:= STRTODATE(EFechaini.Text);
V2:= STRTODATE(EFechafin.Text);
TLlamadas.IndexName:='IFECHA_LLA';
TLlamadas.Locate('FECH_LLA',VarArrayOf( [v1] ), [ loCaseInsensitive, loPartialKey]);
TLlamadas.Locate('FECH_LLA',VarArrayOf( [v2] ), [ loCaseInsensitive, loPartialkey]);
TLlamadas.IndexName:= 'IFECHA_LLA';
SetKey;
FieldByName('NOMB_LLA').AsString;
gotokey;
posi1:= FieldByName('FECH_LLA').AsString;
gotokey;
posi2:= FieldByName('FECH_LLA').AsString;
lsDateExpression := DateToStr(V1) + ',' + DateToStr(V2);
end;
end;

1 Respuesta

Respuesta
1
Ok, para este caso te recomendaría usar TQuery en lugar de TTables, y así no tendrías que usar index ni locate, ni los gotokey y esas cosas medio obsoletas.
Si usas el TQuery harías una consulta de SQL y tendrías algo así:
Select * from tabla
where FECH_LLA between :fechaini and :fechaFin
ese seria mas o menos el SQL
luego para ejecutarlo seria:
Query1.Active := false;
Query1.Params[0].Value := DateToStr(V1);
Query1.Params[1].Value := DataToStr(V2);
Query1.Active := true;
Si te das cuenta las fechas son los parámetros de tu query y a ellas les pasas las variables v1 y v2 que son tus fechas inicial y final.
Gracias por la responder, pero como te comente, estoy empezando, no se como hacer un query.
Ok, así como tomaste el componente TTable, ahora toma el componente TQuery, este lo conectas igual que el TTable lógicamente no le vas a especificar una tabla, lo que vas hacer con el TQuery es lo siguiente:
Tiene una propiedad llamada SQL, le das click y te mostrara un editor en el cual escribirás lo siguiente, SELECT * FROM nombreTabla
NombreTabla es el nombre de la tabla de la cual quieres ver la información.
Luego pones un DataSource y a este DAtaSource le conectas tu TQuery en la propiedad DataSet.
Luego pones un DBGrid al cual le conectas el DataSource en su propiedad DAtaSource del grid.
Luego pones un botón y en el onClick pones:
Query1.Active := true;
Y listo has esto un proyecto aparte como una prueba, para que veas como funciona un query. Ok
Cuando pongo Query1 me refiero al nombre que le hayas puesto a tu query ok.
Gracias voy a probar y te comento
No olvides cerrar la pregunta para poder seguir ayudando a la comunidad.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas