Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-08-2003
anitra_cattivo anitra_cattivo is offline
Miembro
 
Registrado: ago 2003
Ubicación: Peru
Posts: 30
Poder: 0
anitra_cattivo Va por buen camino
Question Agrupar en QuickReport

Necesito Agrupar los Documentos de Venta.

Tablas a usar:

CLIENTES.DBF
DOCUMENTOS.DBF
MOVIMIENTOS.DBF

De la Tabla Clientes.dbf usare el Código y Razón
Social.

En la Tabla Documentos.dbf solo hay estos dos campos.
CODIGO Código del Documento
DESCRIPCIÓN Descripción del mismo (Factura, Boleta,
etc)

Hay personas que no tienen RUC, así que no pueden
solicitar Facturas por su compra, así que se le da
otro documento como una Boleta o simplemente no desean
Factura y piden Boleta.

Y la tabla Movimientos.dbf que contiene quien hace la
compra (código del cliente), en que fecha, que
documento (código de la tabla documentos.dbf) se le
emitió, el monto, etc

Si hago una relación Maestro/Detalle de Cliente a
Movimientos el Reporte me sale algo así:


000012 ROBLES S.A.C.
-------------------------------
08/01/2003 001-002536 150.00 Factura
09/01/2003 001-000039 110.50 Boleta
11/01/2003 001-002539 352.50 Factura


000014 COMAÑIA SEGUNDA
-------------------------------
08/01/2003 001-002535 254.20 Factura
10/01/2003 001-002541 198.00 Factura

.
.
.


Pero...... Hay un detalle, Como vemos en la ultima
columna esta el tipo de "documento" que se le emitio.

Me gustaría que salga así:

000012 ROBLES S.A.C.
-------------------------------
Factura
----------
08/01/2003 001-002536 150.00 Factura
11/01/2003 001-002539 352.50 Factura

Boleta
----------
09/01/2003 001-000039 110.50 Boleta


000014 COMAÑIA SEGUNDA
-------------------------------
Factura
----------
08/01/2003 001-002535 254.20 Factura
10/01/2003 001-002541 198.00 Factura


De tal forma que podría sumar la cantidad de Facturas
emitidas a ese cliente.


En la tabla MOVIMIENTOS.DBF Solo tengo el código del
Documento y el numero del mismo, la descripción del
documento lo tengo en la tabla Documentos.dbf.

Como puedo hacer en QuickReport para que me salga un
reporte parecido a este?.

Muchas pero muchisimas gracias.
Responder Con Cita
  #2  
Antiguo 21-08-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
bueno, esto es cuestion de ordenacion de tablas

necesitas un indice que se ordene por el campo Id_Documento que este en la tabla Movimientos y, antes de lanzar el report, ordenar la tabla por ese indice. Con esto te deberia funcionar

Espero te sirva
Responder Con Cita
  #3  
Antiguo 21-08-2003
anitra_cattivo anitra_cattivo is offline
Miembro
 
Registrado: ago 2003
Ubicación: Peru
Posts: 30
Poder: 0
anitra_cattivo Va por buen camino
Pero si la tabla de Movimientos esta ordenada ya por fecha?

y como se genera el Reporte despues de ordenar?. Recuerda que No solo necesito un maestro/detalle entre Clientes.dbf y Movimiento.dbf, debo ver la forma de que se considere el tipo de documento para despues poder hacer una suma de cantidades de documentos emitidos por cliente, como tambien la sumatoria de los totales (montos cobrados) por cada tipo de documento.
Responder Con Cita
  #4  
Antiguo 21-08-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
A ver si te he entendido...

Tienes la siguiente relacion

Clients -> Movimientos -> Documentos

no? Bien, si es así, en Movimientos es de suponer que tienes un campo Id_Cliente (por decirlo de alguna manera) que es el que te establece la relación Maestro-Detalle
Documentos es una tabla donde se almacena (por lo que he entendido) Id_Documento y Descripción y, según lo que dices en el primer Post, en Movimientos tienes un campo (llamemosle Id_Documento) que indica el tipo de Documento

Bien, visto esto, puedes ir al DatabaseDesktop y definir un indice secundario en Movimientos que sea (por ejemplo) Id_Cliente + Id_Documento + Fecha (llamemosle I_CliDocF). Entonces, antes de lanzar el listado puedes asignarle este indice a la tabla de Movimientos

Código:
TMovimientos.IndexName := 'I_CliDocF';
Ahora, ya puedes hacer las roturas como quieres con un QrGroup.

Para la descripción del tipo de documento, puedes crearte un campo de tipo Calculate en el TTable de Movimientos que te de la descripción y, mostrar ésta en el Report

Esta es una solución. Otra solución sería hacer una Query que hiciera una JOIN entre las tres tabla

Código:
select *
from clientes c inner join 
      movimientos m on (m.Id_Cliente = c.Id_Cliente) inner join
      documentos d on (d.Id_Documento = m.IdDocumento)
where Condiciones que quieras
order by c.Id_Cliente, m.Id_Documento, m.Fecha
y hacer un report directamente de esta Query

Bueno, siento el rollo este

Espero te sirva
Responder Con Cita
  #5  
Antiguo 22-08-2003
anitra_cattivo anitra_cattivo is offline
Miembro
 
Registrado: ago 2003
Ubicación: Peru
Posts: 30
Poder: 0
anitra_cattivo Va por buen camino
Por favor. si no fuera mucha molestai. podrias explicarme un poco mas referente al segundo metodo. Me refiero al Query.

- Aqui tambien debo crear el indice que comentas en movimientos.dbf?
- A que tabla en si se le aplica el select y como debo hacer esto luego en el quickreport. Ya no es necesario el QrGroup?

En verdad no es un rollo, estoy aprendiendo mucho mientras hago pruebas, pero no sale como me gustaria. No comprendo mucho la banda QrGroup.


Muchas Gracias.
Responder Con Cita
  #6  
Antiguo 22-08-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Para una demo con mas o menos explicaciones del funcionamiento del QrGroup, puedes descargarte de mi web el ejemplo que hay en ella sobre el QuickReport en Delphi-Demo de componentes

Aqui tambien encontraras la forma de unir dos tablas (o las que sean) mediante un SQL ya que el report se basa en una query

En este segundo caso, el de la Query, no hace falta que se cree ningun indice en las tablas, aunque si el volumen de datos es grande, sí es aconsejable para que la Query sea más rápida

La Query que has de lanzar es más o menos la que te he puesto en el post anterior, es decir, es una select contra la tabla "principal" que sería clientes y hacer una inner join contra la tabla de movimientos mediante el/los campo/s que una/n las dos tablas y, otra inner join para unir el resultado de la primera join con documentos para sacar la descripción del tipo de documento (uniendo también por los campos correspondientes que yo he puesto Id_Documento aunque no se realmente cual es ya que desconozco la estructura de las Tablas)

Bueno, a ver si con el ejemplo de mi web y estas explicaciones logramos que tires para delante
Responder Con Cita
  #7  
Antiguo 26-08-2003
anitra_cattivo anitra_cattivo is offline
Miembro
 
Registrado: ago 2003
Ubicación: Peru
Posts: 30
Poder: 0
anitra_cattivo Va por buen camino
Question



Ok. Tengo una gran tabla formada por el Query, esta tabla contiene los datos de Clientes, Movimientos y Documentos.

Entonces, no necesito de una relacion Maestro/Detalle Pues es solo una tabla.

Veamos.

En mi reporte ira la tabla que se formo con el Query a Clientes.
Debere poner una franja de QrGroup para poner en Expression algo como Q_clientes=codigo si es que lo quiero agrupar por codigo de cliente. En la misma franja de QrGroup pondre un par de etiquetas QrDbText que contengan el Codigo del Cliente y el Nombre.

Ahora, necesito una Franja Detalles. No se que poner alli. Pues ya en el QrGroup esta el codigo y nombre del cliente.
En Detalles se me ocurre poner los movimientos de ese cliente.
Pero entre clientes (??) y su respectivo movimiento debe estar el tipo de documento.

Cliente

Ducumento
Movimientos de ese tipo de documento.

otro documento
Movimientos de ese tipo de otro documentodocumento.

Otro Cliente
.
.
.


La unica forma de que mis diminuta vista lo puede ver es asi:

Cliente (QrGroup)
Ducumento ( No se)
Movimientos de ese tipo de documento. (Detalle)


sniff.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 20:26:42.


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
Copyright 1996-2007 Club Delphi