Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Subtotal en consultas y reportes (https://www.clubdelphi.com/foros/showthread.php?t=67330)

othaheguy 12-04-2010 14:09:32

Subtotal en consultas y reportes
 
Hola buen dia. Necesito hacer los siguiente:
Utiizo, Delphi 5 BD paradox
- Tengo un reporte con un corte de control por clientes, en el cual me muestra algo asi
COCA COLA
Pres. Nº2012 "refencia 1" 04/03/2010 $1000
Pres. Nº2002 "refencia 2" 04/02/2010 $1500
Pres. Nº2016 "refencia 3" 24/03/2010 $1800
TERSUAVE
Pres. Nº2013 "refencia 1" 04/03/2010 $1000
Pres. Nº2003 "refencia 3" 04/02/2010 $1500
Pres. Nº2015 "refencia 4" 24/03/2010 $1800
DISAl SA
Pres. Nº2012 "refencia 1" 04/03/2010 $1000
Pres. Nº2002 "refencia 3" 04/02/2010 $1500
Pres. Nº2016 "refencia 5" 24/03/2010 $1800
Necesito poder sumar cada cliente los presupuestos, eso por un lado, y a su vez poder ordenar de mayor a menor ese total
Y mostrando la misma informacion mas el TOTAL de mayor a menor.
Por lo tanto, pense en hacer una sonsulta ya con esta informacion, quedando algo asi:
Nº2012 COCA COLA "refencia 1" 04/03/2010 $1000
Nº2002 COCA COLA "refencia 2" 04/02/2010 $1500
Nº2016 COCA COLA "refencia 3" 24/03/2010 $1800
TOTAL $4300
obtener los 3 presup. + un registro casi en blanco con la suma de los presupuestos.
En oracle haria algo asi, pero aca no me lo toma.
Código:

SELECT p.codcli, p.codpresup, c.nomcli, p.referencia,p.fechapresup, p.importe
 FROM presupuestos p, clientes c
 WHERE p.codcli = c.codcli
UNION
SELECT p.codcli, 0 , '', 'TOTAL', NULL, SUM(p.importe)
 FROM presupuestos p, clientes c
 WHERE p.codcli = c.codcli
 GROUP BY p.codcli
ORDER BY 6 DESC

El 1º select me devolveria
1010 Nº2012 COCA COLA "refencia 1" 04/03/2010 $1000
1010 Nº2002 COCA COLA "refencia 2" 04/02/2010 $1500
1010 Nº2016 COCA COLA "refencia 3" 24/03/2010 $1800
Y el 2º
1010 0 '' 'TOTAL' $4300
Espero haber sido claro, gracias...

Casimiro Noteví 12-04-2010 14:24:00

Por favor, utiliza las etiquetas [code ] tu código [/code ] para que se pueda leer, así es complicado, gracias :)
Aquí tienes una referencia

othaheguy 12-04-2010 14:40:20

Disculpa, pero no entiendo que esta mal, lo hice en el bloc de notas, para que se puro texto. Si vos consultas este foro mi consulta, esta legible.
Gracias

Casimiro Noteví 12-04-2010 15:38:58

Amigo othaheguy, quiero decir que debes poner el código fuente entre etiquetas para que quede así, de esta manera es más legible para todos.
Código:

SELECT p.codcli, p.codpresup, c.nomcli, p.referencia,p.fechapresup,  p.importe
 FROM presupuestos p, clientes c
 WHERE p.codcli = c.codcli
UNION
SELECT p.codcli, 0 , '', 'TOTAL', NULL, SUM(p.importe)
 FROM presupuestos p, clientes c
 WHERE p.codcli = c.codcli
 GROUP BY p.codcli
ORDER BY 6 DESC

Debes meter el código entre unas etiquetas
[code ]
tu código fuente
va aquí
[/code ]

othaheguy 12-04-2010 16:33:27

Asi esta mejor?
Necesito hacer los siguiente:
Utiizo, Delphi 5 BD paradox
- Tengo un reporte con un corte de control por clientes, en el cual me muestra algo asi
COCA COLA
Pres. Nº2012 "refencia 1" 04/03/2010 $1000
Pres. Nº2002 "refencia 2" 04/02/2010 $1500
Pres. Nº2016 "refencia 3" 24/03/2010 $1800
TERSUAVE
Pres. Nº2013 "refencia 1" 04/03/2010 $1000
Pres. Nº2003 "refencia 3" 04/02/2010 $1500
Pres. Nº2015 "refencia 4" 24/03/2010 $1800
DISAl SA
Pres. Nº2012 "refencia 1" 04/03/2010 $1000
Pres. Nº2002 "refencia 3" 04/02/2010 $1500
Pres. Nº2016 "refencia 5" 24/03/2010 $1800
Necesito poder sumar cada cliente los presupuestos, eso por un lado, y a su vez poder ordenar de mayor a menor ese total
Y mostrando la misma informacion mas el TOTAL de mayor a menor.
Por lo tanto, pense en hacer una sonsulta ya con esta informacion, quedando algo asi:
Nº2012 COCA COLA "refencia 1" 04/03/2010 $1000
Nº2002 COCA COLA "refencia 2" 04/02/2010 $1500
Nº2016 COCA COLA "refencia 3" 24/03/2010 $1800
TOTAL $4300
obtener los 3 presup. + un registro casi en blanco con la suma de los presupuestos.
En oracle haria algo asi, pero aca no me lo toma.
Código:

SELECT p.codcli, p.codpresup, c.nomcli, p.referencia,p.fechapresup, p.importe
FROM presupuestos p, clientes c
WHERE p.codcli = c.codcli
UNION
SELECT p.codcli, 0 , '', 'TOTAL', NULL, SUM(p.importe)
FROM presupuestos p, clientes c
WHERE p.codcli = c.codcli
GROUP BY p.codcli
ORDER BY 6 DESC

El 1º select me devolveria
1010 Nº2012 COCA COLA "refencia 1" 04/03/2010 $1000
1010 Nº2002 COCA COLA "refencia 2" 04/02/2010 $1500
1010 Nº2016 COCA COLA "refencia 3" 24/03/2010 $1800
Y el 2º
1010 0 '' 'TOTAL' $4300
Espero haber sido claro, gracias...

Casimiro Noteví 12-04-2010 17:56:25

Esas agrupaciones, sumas, subtotales, etc. deben permitirlas hacer el generador de informes que uses, ¿cuál es?

othaheguy 12-04-2010 17:59:39

El Qreport que viene con delphi 5, es lo mas standard, otro no he utilizado. Me recomendas que vea algun otro??
Hay una funcion que hacia una suma por grupo, pero no me ordenaba, eso lo tengo que enviar de antes, por eso la consulta.

Casimiro Noteví 12-04-2010 18:39:52

No lo he usado, pero seguro que sirve para lo que quieres.
Evidentemente, si los quieres ordenados, tendrás que ordenarlo tú o usar alguna opción que tenga el informe para hacerlo.
Supongo que qreport, al igual que todos, vendrá con ejemplos que pueden servirte de referencia.

othaheguy 12-04-2010 20:05:48

Pero mi problema es el SELECT, como se haria ese en Delphi??

othaheguy 13-04-2010 13:23:20

Hola, lo solucione creando una tabla con los totales y despues la relacione a la tabla con todos los datos. Por ahora esta resuelto. pero queda esa duda.
Gracias

fjcg02 13-04-2010 23:32:03

QReport tiene las QRExpr, que permiten realizar calculos. Sumas, medias, etc del campo que quieras.
Tendrás que incluir una banda de subtotales en la que incluyas una QRExpr con la función que quieras. En esa misma banda se especifica qué campo hace que se visualice la banda y si se pone a cero el valor.

Para el total de todos los presupuestos puedes poner otro QRExpr en la misma banda sin que se resetee cuando cambie de valor el campo o puedes añadir otra banda tipo report footer con un campo QRExpr.

En los ejemplos creo que vienen casos bastante completos.

Para la ordenación, simplemente ordena el dataset que origina el informe por los campos que quieras y ya está ( cliente e importe imagino ).

Yo no uso ese tipo de bandas, por lo que no puedo darte demasiados detalles.

Saludos


La franja horaria es GMT +2. Ahora son las 18:45:34.

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