Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Agrupar y sumar en Rave (https://www.clubdelphi.com/foros/showthread.php?t=50179)

seoane 10-11-2007 14:24:22

Agrupar y sumar en Rave
 
Tengo un consulta que me devuelve lo siguiente:

Código:

Tienda        Fecha                Caja        Importe
----------------------------------------------------
1        10/10/2007        1        10,00
1        10/10/2007        1        10,00
1        10/10/2007        1        10,00
1        10/10/2007        1        10,00
2        10/10/2007        1        10,00
2        10/10/2007        1        10,00
2        10/10/2007        1        10,00
2        10/10/2007        2        10,00
2        10/10/2007        2        10,00

... etc

Y quiero hacer un reporte en Rave (si nadie sugiere nada mejor :) ) que me agrupe esos datos de la siguiente manera:

Código Delphi [-]
Tienda
  Fecha
    Caja
      Importe
      Importe
      Importe
      Importe

    Total Caja
  Total Fech

  Fecha
    Caja
      Importe
      Importe
      Importe
      Importe

    Total Caja
  Total Fech
Total Tienda

Es decir, agrupar los datos por Tienda, Fecha y Caja, y además calcular el total por Tienda, Fecha y Caja. Por ahora he conseguido agrupar los datos usando Band y Databand, pero lo que no consigo de ninguna manera es mostrar los diferentes totales. He probado con un CalcText, pero es evidente que lo estoy haciendo mal porque, o no aparece nada o solo muestra cero.

La verdad es que es la primera vez que hago un reporte con rave y estoy bastante perdido, si alguien me pudiera pasar un ejemplo muy básico de como agrupar los datos y calcular los totales, le estaría muy agradecido :)

Caral 10-11-2007 14:57:50

Hola Seoane
Me gustaria poder ayudarte pero no manejo Rave, el que uso es Qreport, no se si seran parecidos o no.
Entiendo que necesitas agrupar los datos por Tienda, Fecha y Caja, lo que no entiendo es como pretendes los totales de Fecha y Caja, que ganas con esto?.
Para mi la logica es la que mantienes en principio, pero sacar solo los totales por el importe entre un rango de fechas.
Cita:

Tienda 1
Fecha desde 01/10/2007 hasta 10/10/2007
Caja 1
Importe 10
Importe 20
Importe 10
Importe 10

Total Importe 50
----------------------------------------------------------
Tienda 2
Fecha desde 01/10/2007 hasta 10/10/2007
Caja 2
Importe 10
Importe 30
Importe 20
Importe 10

Total Importe 70
Recuerda que soy novato, es solo una idea.
Saludos

seoane 10-11-2007 15:01:00

Amigo Caral, no se trata de lo que yo quiero si no de lo que me piden ... :D

Caral 10-11-2007 15:15:00

Hola
Sin meterme en que lo que te piden, para mi es ilógico y demostrable, ya que como pretende tu jefe que hagas una totalización de las cajas (esto todavia seria medio posible) pero una tolalizacion de fechas?:confused::rolleyes:
Bueno, aparte de lo que pueda pensar, me parece que es un asunto de sentencia sql y que todo (en el caso de qreport) se hace en un qrband.
Código Delphi [-]
 else If Reporte = 'VentasXFechaContado' then
   begin
      ShortDateFormat := '#yyyy/mm/dd#';
      try
         QRVentasTipo:=TQRVentasTipo.Create(self);
         QRVentasTipo.ADOQuery1.SQL.Add(' AND Fecha >= '+DateToStr(DTP1.Date)+' AND Fecha <= '+DateToStr(DTP2.Date));
         QRVentasTipo.ADOQuery1.SQL.Add(' AND Factura.Terminos = "Contado" ');
         QRVentasTipo.ADOQuery1.SQL.Add(' ORDER BY Fecha, Factura.CodFactura;');
         QRVentasTipo.ADOQuery1.Open;
         ShortDateFormat := 'dd/mm/yyyy';
         QRVentasTipo.QRLabel10.Caption:= 'Reporte de Ventas detalladas Contado';
         QRVentasTipo.QRLblDesde.Caption := DateToStr(DTP1.Date);
         QRVentasTipo.QRLblHasta.Caption := DateToStr(DTP2.Date);
         If RadioGroup1.ItemIndex = 0 then QRVentasTipo.Print
         else QRVentasTipo.Preview;
      finally
         QRVentasTipo.Free;
      end;
Esto es un despacito de codigo que uso en un reporte.
Creo que no te serviran de mucho mis intervenciones, pero aprovecho para saludarte.
Saludos

seoane 10-11-2007 15:42:17

Hola Caral, lo de agrupar por fechas tiene su razón. Este tipo de informe es estándar, se utiliza para saber, con un simple vistazo, cuanto vendió cada caja, cuanto se vendió en un día de terminado y cuanto vendió cada tienda. Tanto la sentencia SQL como el formato del informe me vienen impuestos así que por ahí no creo que solucione nada :( .

Pero gracias de todas formas, yo también estoy encantado de saludarte :)

Caral 10-11-2007 15:50:31

Hola
Lo de agrupar por fecha es diferente de Sumar o totalizar fechas, eso cambia las cosas.
Como sabes que soy un necio en esto, estoy haciendo un ejemplo que haga exactamente lo que quieres.
Calcula totales por tienda, en una fecha determinada y totaliza lo vendido por caja y la totalidad de las cajas.
Recuerda que mis ejemplo son en access y qreport, espero te pueda dar alguna idea, que puedas mejorar.
Saludos

Caral 10-11-2007 16:56:53

Hola
No he podido terminarlo (la familia me reclama), pero por lo menos alguna idea creo que saldra del pequeño ejemplo, espero que te ayude.
Aqui esta.
Saludos

hecospina 11-11-2007 01:14:49

Hola
No he trabajado con rave pero si lo he hecho en fast report y qreport
Me imagino que la diferencia no es mucha pues se pueden tener consultas sql para consultar la informacion

select tienda, fecha, caja, importe
from tabla
order by tienda, fecha, caja

busca en tu reporteador una opcion para adicionar un group header y adiona 3, el primero para la tienda, el segundo para la fecha y el ultimo para la caja
realizas la agrupacion en cada uno de ellos por el campo respectivo

el de master data colocas el campo del importe

si el reporteador no trae el group fother lo podras adicionar
en ellos colocas la expresion de la sumatoria del importe
debes buscar en las propiedades del objeto para colocar la opcion iniciar en cero para que no te acumule por cada grupo

de esta forma se puede hacer tanto en fast report como en qreport
espero que te ayude


La franja horaria es GMT +2. Ahora son las 03:13:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi