Club Delphi  
    FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Desplegado
  #1  
Antiguo 21-05-2008
metroyd metroyd is offline
Miembro
 
Registrado: oct 2007
Posts: 78
metroyd Va por buen camino
Como Hacer Un Reporte De Ventas??

Hola, me interesa hacer un reporte de las ventas realizadas en el dia. Tengo dos tablas: VENTA (id_venta,fecha_venta,total_venta) y DETALLE_VENTA(id_venta,id_producto,cantidad_vendida,precio_venta).

El reporte me gustaria que quedara asi:

-------------------------------------------------------------------------
REPORTE DE VENTAS EN EL DIA
------------------------------------------------------------------------

ID VENTA: 1 FECHA: 12/05/2008 TOTAL: $354.00

DETALLE:
2 Chocolates
4 Cervezas
------------------------------------------------------------------------

ID VENTA: 2 FECHA: 12/05/2008 TOTAL: $114.00

DETALLE:
1 cigarros
9 Refrescos cola
-------------------------------------------------------------------------
ID VENTA: 3 FECHA: 12/05/2008 TOTAL: $451.00

DETALLE:
3 huevos
6 latas de atun
2 gomas mascar
------------------------------------------------------------------------

Algo asi. Utilizo quickreport, y qrsubdetail.
Si hago una consulta uniendo ambas tablas y lo mando al reporte, me imprime un registro por cada espacio en un QRSubdetail.
Espero su ayuda, gracias!!!!!
Responder Con Cita
  #2  
Antiguo 21-05-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
You will suffer me.
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.706
ContraVeneno Va por buen camino
pues solo te faltaría agregar una banda TQRGroupBand en la propiedad "Expression" colocar el nombre del campo de la ID de la venta. En esa misma banda, pondrías El id de la venta, la fecha y el total sería un TQRExpr con la expresión Sum(Total) y la propiedad ResetAfterPrint establecida a verdadero.
__________________

Responder Con Cita
  #3  
Antiguo 22-05-2008
metroyd metroyd is offline
Miembro
 
Registrado: oct 2007
Posts: 78
metroyd Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
pues solo te faltaría agregar una banda TQRGroupBand en la propiedad "Expression" colocar el nombre del campo de la ID de la venta. En esa misma banda, pondrías El id de la venta, la fecha y el total sería un TQRExpr con la expresión Sum(Total) y la propiedad ResetAfterPrint establecida a verdadero.
El QRGroup Band va antes de los detalles de la venta??? Esta banda me servira para capturar aquellos registros repetidos?? Es decir, El ID de la venta, la fecha y el total?????
Y en subdetail pondria los detalles de las ventas???????
Responder Con Cita
  #4  
Antiguo 22-05-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
You will suffer me.
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.706
ContraVeneno Va por buen camino
Cita:
Empezado por metroyd Ver Mensaje
El QRGroup Band va antes de los detalles de la venta??? Esta banda me servira para capturar aquellos registros repetidos?? Es decir, El ID de la venta, la fecha y el total?????
Y en subdetail pondria los detalles de las ventas???????
La banda de agrupación se ajusta automáticamente en el orden que le corresponde, es decir, tu solo la pones en el reporte y ella busca su lugar, antes o después de donde le corresponda. Si es de agrupación, se pone antes del detalle, si le dices que la banda es de sumatoria, se pone al final.

Los registros se agruparán automáticamente dependiendo del campo que tu especifiques en la propiedad Expression de la QRGRoupBand y dependiendo del orden de tu consulta. Los campos comunes, como ID y fecha, los puedes poner en esta banda, para evitar que se vean repetidos (como si los pusieras en la banda detalle). El total tendría que ir en una banda GroupFooter para que sume los resultados de cada grupo.

El detalle de las ventas, pues tendrías que ponerlo en la banda QRDetail.
__________________

Responder Con Cita
  #5  
Antiguo 22-05-2008
metroyd metroyd is offline
Miembro
 
Registrado: oct 2007
Posts: 78
metroyd Va por buen camino
Hola, Pues con lo que me has explicado ya puedo lograr imprimir el resultado de una sola venta, por ejemplo:

ID VENTA:2 FECHA: 22/05/2008 TOTAL: $44.00

DETALLE: CANTIDAD VENDIDA COSTO ($)
-----------------------------------------------------------------------------------
Refrescos 2 10.0
chocolate 4 6.0


Pero ahora me gustaria poder imprimir las ventas realizadas en un rango de fechas, por ejemplo, el resultado seria asi:

ID VENTA:2 FECHA: 22/05/2008 TOTAL: $44.00

DETALLE: CANTIDAD VENDIDA COSTO ($)
-----------------------------------------------------------------------------------
Refrescos 2 10.0
chocolate 4 6.0
__________________________________________________________________________

ID VENTA:3 FECHA: 25/05/2008 TOTAL: $180.00

DETALLE: CANTIDAD VENDIDA COSTO ($)
-----------------------------------------------------------------------------------
Papas 10 15.0
chocolate 6 6.0
Pan Tostado 2 6.0
__________________________________________________________________________

ID VENTA:5 FECHA: 25/05/2008 TOTAL: $3.00

DETALLE: CANTIDAD VENDIDA COSTO ($)
-----------------------------------------------------------------------------------
Gomas de mascar 3 1.0
__________________________________________________________________________

La consulta que hago para obtener estos resultados es:
Código SQL [-]SELECT venta.id_venta,venta.fecha_venta,venta.total_venta,productos.descripcion,detalle_venta.precio_unitar io,detalle_venta.cantidad_vendida FROM venta,productos,detalle_venta WHERE venta.fecha_venta>="aki va la fecha" AND venta.fecha_venta<="aki va la otra fecha" AND venta.id_venta = detalle_venta.id_venta AND productos.id_producto = detalle_venta.id_producto order by venta.id_venta


Si aplico esta consulta con lo que ya tengo en el quickReport, me aparece en el qrgroup los datos de la primera venta, y en el SubDetail aparecen todos los productos vendidos de todas las ventas que cumplan el rango.

Código Delphi [-]
form18.QuickRep1.DataSet:=modulo.busqueda;
         form18.QRGroup1.Expression:=modulo.busqueda.fieldbyname('id_venta').AsString;
     form18.QRSubDetail1.DataSet:=modulo.busqueda;
     form18.QRDBText1.DataSet:=modulo.busqueda;
     form18.QRDBText2.DataSet:=modulo.busqueda;
     form18.QRDBText3.DataSet:=modulo.busqueda;
     form18.QRDBText4.DataSet:=modulo.busqueda;
     form18.QRDBText5.DataSet:=modulo.busqueda;
     form18.QRDBText6.DataSet:=modulo.busqueda;
     form18.QRDBText1.DataField:='id_venta';
     form18.QRDBText2.DataField:='fecha_venta';
     form18.QRDBText3.DataField:='total_venta';
     form18.QRDBText4.DataField:='descripcion';
     form18.QRDBText5.DataField:='cantidad_vendida';
     form18.QRDBText6.DataField:='precio_unitario';
     form18.QuickRep1.Preview;

Espero tu ayuda, gracias!!!!!

Última edición por metroyd fecha: 22-05-2008 a las 19:03:01.
Responder Con Cita
  #6  
Antiguo 22-05-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
You will suffer me.
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.706
ContraVeneno Va por buen camino
Código Delphi [-]
with Modulo.Busqueda do begin
 If active then close;
 SQL.Clear;
 SQL.Add('SELECT V.id_venta, V.fecha_venta, V.total_venta, P.descripcion,');
 SQL.Add('DV.precio_unitario, DV.cantidad_vendida ');
 SQL.Add('FROM venta V');
 SQL.Add('join Detalle_Venta DV on V.ID_Venta = DV.ID_Venta');
 SQL.Add('join Productos P on DV.Id_Producto = P.ID_Producto');
 SQL.Add('WHERE V.fecha_venta between :FechaIni and :FechaFin');
 SQL.Add('order by V.id_venta');
 ParamByName('Fechaini').AsDateTime := unDateTimePickerIni.DateTime;
 ParamByName('FechaFin').AsDateTime := unDateTimePickerFin.DateTime;
 Open;
end; //with
__________________

Responder Con Cita
  #7  
Antiguo 22-05-2008
metroyd metroyd is offline
Miembro
 
Registrado: oct 2007
Posts: 78
metroyd Va por buen camino
mmmm , el resultado sigue siendo el mismo amigo:
http://www.subirimagenes.com/fondosy...do-506687.html

Esta es la estructura de mi quick Report:
http://www.subirimagenes.com/fondosy...te-506692.html

y este es el resultado de la consulta que me pasaste, que pues si funciona:
http://www.subirimagenes.com/otros-r...a2-506736.html

Y este es el codigo del boton Imprimir despues de haber seleccionado las fechas:
Código Delphi [-]
with Modulo.Busqueda do begin
        If active then close;
        SQL.Clear;
        SQL.Add('SELECT venta.id_venta, venta.fecha_venta, venta.total_venta, productos.descripcion,');
        SQL.Add('detalle_venta.precio_unitario, detalle_venta.cantidad_vendida ');
        SQL.Add('FROM venta');
        SQL.Add('join detalle_venta on venta.id_venta = detalle_venta.id_venta');
        SQL.Add('join productos on detalle_venta.id_producto = productos.id_producto');
        SQL.Add('WHERE venta.fecha_venta between "2008-05-01" and "2008-05-31"');
        SQL.Add('order by venta.id_venta');
        //ParamByName('Fechaini').AsDateTime := unDateTimePickerIni.DateTime;
        //ParamByName('FechaFin').AsDateTime := unDateTimePickerFin.DateTime;
        Open;
     end;

     form18.QuickRep1.DataSet:=modulo.busqueda;
     form18.QRGroup1.Expression:=modulo.busqueda.fieldbyname('id_venta').AsString;
     form18.QRSubDetail1.DataSet:=modulo.busqueda;
     form18.QRDBText1.DataSet:=modulo.busqueda;
     form18.QRDBText2.DataSet:=modulo.busqueda;
     form18.QRDBText3.DataSet:=modulo.busqueda;
     form18.QRDBText4.DataSet:=modulo.busqueda;
     form18.QRDBText5.DataSet:=modulo.busqueda;
     form18.QRDBText6.DataSet:=modulo.busqueda;
     form18.QRDBText1.DataField:='id_venta';
     form18.QRDBText2.DataField:='fecha_venta';
     form18.QRDBText3.DataField:='total_venta';
     form18.QRDBText4.DataField:='descripcion';
     form18.QRDBText5.DataField:='cantidad_vendida';
     form18.QRDBText6.DataField:='precio_unitario';
     form18.QuickRep1.Preview;

Como veras solo estoy probando las ventas del mes de mayo, tengo como 4 ventas, y solo me muestra la primera y en Detalle muestra los productos de todas las ventas

Gracias por tu paciencia amigo, espero sigas ayudandome

Última edición por metroyd fecha: 22-05-2008 a las 19:51:11.
Responder Con Cita
  #8  
Antiguo 22-05-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
You will suffer me.
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.706
ContraVeneno Va por buen camino
PUes supongo que el problema será que estas utilizando una banda "Sub Detail" cuando debería ser "Detail"
__________________

Responder Con Cita
  #9  
Antiguo 22-05-2008
metroyd metroyd is offline
Miembro
 
Registrado: oct 2007
Posts: 78
metroyd Va por buen camino
Bueno, quite la SuDetail y agrege una QRBand con tipo Detail, y ahi meti los QRDBTEXT correspondientes a Descripcion, cantidad vendida y costo. pero no cambio el resultado!!
Si trato de poner su propiedad linkband al QRGroup no realiza la operacion de mostrar el reporte.
Tal vez este reporte sea imposible de hacer con QuickReports
Responder Con Cita
  #10  
Antiguo 22-05-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
You will suffer me.
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.706
ContraVeneno Va por buen camino
tengo infinidad de reportes que hacen eso que pides, todos hechos con quickreports. No es imposible.

Simplemente algún detalle está faltando.

¿Seguro que pusiste el campo "ID_Venta" en la propiedad "Expression" de la banda "GroupBand" ?
__________________


Última edición por ContraVeneno fecha: 22-05-2008 a las 20:16:38.
Responder Con Cita
  #11  
Antiguo 22-05-2008
metroyd metroyd is offline
Miembro
 
Registrado: oct 2007
Posts: 78
metroyd Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
tengo infinidad de reportes que hacen eso que pides, todos hechos con quickreports. No es imposible.

Simplemente algún detalle está faltando.

¿Seguro que pusiste el campo "ID_Venta" en la propiedad "Expression" de la banda "GroupBand" ?
Código Delphi [-]
form18.QRGroup1.Expression:=modulo.busqueda.fieldbyname('id_venta').AsString;


Es correcto esto?

Ahora que recuerdo mencionaste algo de AfterPrint en Falso, pero este es un EVENTO, como puedo asignar el valor falso?? sera esto lo que hace que falle????
Responder Con Cita
  #12  
Antiguo 22-05-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
You will suffer me.
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.706
ContraVeneno Va por buen camino
ya vi el problema, jejeje

cuando haces:
Código Delphi [-]
form18.QRGroup1.Expression:=modulo.busqueda.fieldbyname('id_venta').AsString;

Estas agrupando por el valor de ID_Venta, no por el campo.

tiene que ser:
Código Delphi [-]
form18.QRGroup1.Expression:='ID_Venta';

///o tambien
form18.QRGroup1.Expression:=modulo.busqueda.Fields[0].FieldName;
__________________

Responder Con Cita
  #13  
Antiguo 22-05-2008
metroyd metroyd is offline
Miembro
 
Registrado: oct 2007
Posts: 78
metroyd Va por buen camino
Excelente Maestro

UFF, HASTA QUE POR FIN RESULTÓ
gRACIAS

OYE ME PODRIAS AYUDAR CON OTRO REPORTE PARECIDO A ESTE?? PERO AKI MANEJO LA CARTELERA DE UN CINE, DEJA TE PASO EL LINK DEL HILO DONDE PUSE ESTO
Responder Con Cita
  #14  
Antiguo 22-05-2008
metroyd metroyd is offline
Miembro
 
Registrado: oct 2007
Posts: 78
metroyd Va por buen camino
Ayuda Con Este Reporte

http://www.clubdelphi.com/foros/showthread.php?t=56570
Responder Con Cita
  #15  
Antiguo 22-05-2008
metroyd metroyd is offline
Miembro
 
Registrado: oct 2007
Posts: 78
metroyd Va por buen camino
aki va el problema que quiero resolver:

Hola otra vez espero me puedan ayudar. Tengo una tabla llamada HORARIOS, donde guardo peliculas que se exhiben en un cine:
http://www.subirimagenes.com/otros-horarios-506992.html

y otra tabla llamada

FUNCIONES (id_funcion,cve_pelicula,sala,dia,funcion). aki guardo los horarios de las funciones correspondientes a los dias de la semana para las peliculas. Los horarios de Lunes a Viernes son los mismos, solo cambian Sabados y domingos. puede haber un maximo de 6 funciones al dia:

http://www.subirimagenes.com/otros-f...es-507000.html


Entonces, ahora quiero imprimir la cartelera de la semana, de tal manera que que mi reporte quede mas o menos asi:

Reporte de cartelera de la semana
---------------------------------------------------------------------

00001 Soy legenda SALA:1 DUR: 89 Min. CLAS: b-15
LUNES - VIERNES: 2:30 pm 4:30 pm 6:30 pm 8:30 pm
SABADOS 1:25 pm 3:50 pm 7:00 pm
DOMINGOS 3:30 pm 5:30 pm 7:30 pm

----------------------------------------------------------------------
00002 amores prohibidos SALA:2 DUR: 101 Min. CLAS: b-15
LUNES - VIERNES: 5:30 pm 7:50 pm
SABADOS 3:25 pm 5:50 pm 8:00 pm
DOMINGOS 12:50 pm 3:00 pm 5:40 pm 8:00 pm
-----------------------------------------------------------------------

Si hago esta consulta: Código SQL [-]SELECT horarios.cve_pelicula,horarios.titulo,horarios.sala,horarios.distribuidor,horarios.duracion,horarios .clasificacion,funciones.dia,funciones.funcion FROM horarios,funciones WHERE horarios.titulo = funciones.pelicula and horarios.sala = funciones.sala order by sala,dia,funcion


Me muestra este resultado:

http://www.subirimagenes.com/otros-r...ta-507014.html

Y es lo que quiero plasmar en el reporte.
Con lo que me has enseñado los datos de las peliculas iran en un GroupBand asociado a la CVE_PELICULA, ahora, como y donde podria meter el campo Funciones, para que se desplegaran tal y como lo menciono mas arriba??

Ocupo esta estructura de reporte:
http://www.subirimagenes.com/otros-q...rt-500753.html

Espero tu ayuda nuevamente amigo, gracias!!!!!!

Última edición por metroyd fecha: 22-05-2008 a las 20:53:45.
Responder Con Cita
  #16  
Antiguo 22-05-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
You will suffer me.
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.706
ContraVeneno Va por buen camino
  1. Sería mejor que maneras los días con número, Lunes = 2, martes = 3, etc. Al usuario se lo muestras con letra, pero en tu base de datos es mejor tenerlo como número.
  2. Como ya te había dicho, la banda tiene que ser de tipo "Detail", no "Sub Detail"
  3. Para sacar el reporte que necesitas, requieres de agruparlo dos veces, la primera por película y la segunda por sala. De esa forma ya puedes colocar los horarios como lo necesitas.
__________________

Responder Con Cita
  #17  
Antiguo 23-05-2008
metroyd metroyd is offline
Miembro
 
Registrado: oct 2007
Posts: 78
metroyd Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje

Para sacar el reporte que necesitas, requieres de agruparlo dos veces, la primera por película y la segunda por sala. De esa forma ya puedes colocar los horarios como lo necesitas.
A que te refieres con esto??
Ahora el problema que tengo es que, si te fijaste, en la banda Subdetail (q voy a cambiar por Detail) tengo un DBText para cada funcion, como de Lun a Vier son las mismas, solo tengo 6 QRDBText para esos dias, y como cada DBTExt lo asocio al campo Funcion, pues me aparece la misma funcion para todas las peliculas!!!!
Responder Con Cita
  #18  
Antiguo 23-05-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
You will suffer me.
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.706
ContraVeneno Va por buen camino
Cita:
Empezado por metroyd Ver Mensaje
Cita:
Empezado por ContraVeneno Ver Mensaje
  1. Para sacar el reporte que necesitas, requieres de agruparlo dos veces, la primera por película y la segunda por sala. De esa forma ya puedes colocar los horarios como lo necesitas.
A que te refieres con esto??
a que necesitas colocar dos bandas QRGroup, la primera en su propiedad "Expression" le pones "Cve_pelicula" y a la segunda "sala"
__________________

Responder Con Cita
  #19  
Antiguo 28-05-2008
metroyd metroyd is offline
Miembro
 
Registrado: oct 2007
Posts: 78
metroyd Va por buen camino
Calcular totales de venta

Hola, ya pude imprimir la cartelera, ahora quiero imprimir el total de un grupo de ventas realizadas, es decir, en mi tabla VENTAS tengo(id_venta, fecha_venta,total_venta),. pues ahora en mi reporte, cuando imprimo un grupo de ventas me gustaria que al final del reporte se visualize la sumatoria de todos los totales, por ejemplo:

REPORTE DE VENTAS DE MARZO A MAYO 2008
_________________________________________________________________

ID_ Venta: 4 Fecha: 15/03/2008 Total: $45.0

Detalle:

_________________________________________________________________
ID_venta: 6 FEcha:18/05/2008 Total:$50.0





Gran Total:$ 95.0
_______________________________________________________________
Pag. 1


Gracias por tu ayuda
Responder Con Cita
  #20  
Antiguo 28-05-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
You will suffer me.
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.706
ContraVeneno Va por buen camino
¿y ya viste la banda "Summary"?
__________________

Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como hacer un reporte en php? gabrielflowers PHP 5 18-10-2007 20:24:44
Como hacer para que Vista no reporte "No se pudo comprobar el editor" Firma digital fcios Windows 2 16-06-2007 05:52:49
¿Cómo hacer un reporte en forma de matriz? dibe Impresión 6 18-08-2006 03:45:25
Como hacer Ejecutable un Reporte en Crystal?? Barzaugc Impresión 2 16-12-2005 23:03:50
Como hacer un reporte dinamico ? IVAND Impresión 1 05-11-2003 00:05:56


La franja horaria es GMT +2. Ahora son las 14:30:32.


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