FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
|||
|
|||
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 |
#3
|
|||
|
|||
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. |
#4
|
|||
|
|||
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'; 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 Bueno, siento el rollo este Espero te sirva |
#5
|
|||
|
|||
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. |
#6
|
|||
|
|||
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 |
#7
|
|||
|
|||
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. |
|
|
|