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)
-   -   Generar listado con totales en QuickReport (https://www.clubdelphi.com/foros/showthread.php?t=44485)

David 07-06-2007 13:01:57

Generar listado con totales en QuickReport
 
Hola

Tengo dos tablas , una obras y otras facturas .Estoy con TIBQuerys que enlazo con CDClientDataSet

La tabla obra tiene como campos de importancia :

Codigo
Decripción
Cliente

y Facturas

importe
CodObra ( que corresponde a la obra en cuestión)

Cada Obra tiene varias facturas .

Quiero hacer lo siguiente , sacar en un informe las caracteristicas de una obra con la suma total de las facturas de la misma.

Seria

Codigo (de la obra) descripción , SumatodasfacturasdelaObra

El caso es que si pongo un campo calculado , no sé como se haria , puesto que para cada obra hay varias facturas .

He intentado lo siguiente , pero no ha salido . En la Query de Obras hago la selección y le asigno un ClientDataSet (ClientObras) , luego en el Query de Facturas (QFacturas) hago un sum(importe),CoObra from facturas group by
CodObra having CodObra = : CodObra , luego en el clientDataSet de Facturas (ClientFacturas) he hecho una relación maestro detalle con el ClientDataSet de Obras , por el campo CodObra = Codigo .

El caso es que esto no vale , por que no veo la manera de poner un campo en ClientObras , para que saque el importe total de las facturas correspondiente a dicha obra .

Un saludo

Neftali [Germán.Estévez] 07-06-2007 13:15:54

Hola David.
El tema de los títulos para los hilos es un tema recurrrente en los foros. Hasta cierto punto es normal que los "novatos" comentan este error, pero en alguien con 235 mensajes me parece bastante más grave.

Por favor intenta colocar a los hilos títulos descriptivos, que faciliten búsquedas posteriores; el que has puesto en éste hilo o en este otro son totalmente inútiles.

Revisar la Guía de estilo (1 y 2) y el uso de los TAG's tampoco te vendría mal...

David 07-06-2007 13:26:13

Ya es que no sabia como titular el post . Tengo la idea de que hacer pero no sé exactamente como titularlo . Estoy en blanco . Seria por ejemplo , interesante , que a medida que surgan respuestas , al final surga el título y se pueda cambiar.

linuz 07-06-2007 13:49:36

Hola David,

Mira a ver si te sirve lo siguiente:

Código SQL [-]
select sum(F.importe) TOTAL_FACTURAS, f.* , O.* from facturas F
left join obras O on (F.CodObra = O.Codigo)
where O.Cliente = :cliente



De todas formas podrías detallar más sobre lo que quieres.
:)

Un saludo.

Neftali [Germán.Estévez] 07-06-2007 13:52:01

Yo creo que no es tan complicado.
No se trata de explicar el problema entero en el título, sino dar una orientación de por dónde puede ir.
Eso también ayuda a quien revisa los hilos. Si en el título aparece "Cómo instalar MySQL" y yo no tengo ni idea de MySQL o no me interesa, pues ya no entro (por poner un ejemplo).

Segun lo que dices:
Cita:

... Quiero hacer lo siguiente , sacar en un informe las caracteristicas de una obra con la suma total de las facturas de la misma.
No creo que sea muy complicado titularlo: "Generar listado con totales en QuickReport",...:confused::confused::confused: (por ejemplo).

El tema de ir cambiando el título no me parece buena idea, por prácticos (habrá quien se olvide de cambiarlo) y por temas técnicos (página principal de índice, RSS,...). Creo que es darle vueltas a algo que no la tiene. Es sencillo, pon un título con sentido, otra cosa es que luego aciertes más o menos, pero al menos haz el esfuerzo de intentarlo.

Un saludo.

David 07-06-2007 14:04:52

El caso es que ahora no sé como cambiar el título .

Cita:

Empezado por linuz
Código Delphi [-]
select sum(F.importe) TOTAL_FACTURAS, f.* , O.* from facturas F
left join obras O on (F.CodObra = O.Codigo)
where O.Cliente = :cliente

Este código no funciona , estoy con firebird y esta sentencia no es correcta.

Detallo , más lo que quiero , quiero sacar en la tabla de obras un campo , con el total de las facturas ligadas a dicha obra .El campo obviamente seria calculado .

CampoCalculado = SumaImporteFacturas

santi33a 07-06-2007 14:21:43

Prueba así mejor:
Código SQL [-]
select codigo,descripcion,sum(importe) total
 from Obras o inner join
        Facturas f on o.codigo = f.codigo
group by codigo,descripcion

Neftali [Germán.Estévez] 07-06-2007 14:23:30

Cita:

Empezado por David
El caso es que ahora no sé como cambiar el título.

Ya lo he cambiado yo.

linuz 07-06-2007 14:26:22

Cita:

Originalmente Escrito por linuz
Código Delphi [-]select sum(F.importe) TOTAL_FACTURAS, f.* , O.* from facturas Fleft join obras O on (F.CodObra = O.Codigo)where O.Cliente = :cliente




Este código no funciona , estoy con firebird y esta sentencia no es correcta.
¿Que error te ha producido?

linuz 07-06-2007 14:48:39

Me respondo a mi mismo, jeje :p

Me he olvidado de un detalle....

Código SQL [-]
select sum(F.importe) TOTAL_FACTURAS, O.Codigo, O.Descripcion
 from facturas F left join obras O on (F.Codobra = O.Codigo)
 where O.Cliente = 1
 Group by O.Codigo, O.descripcion

Perdón.... :o :rolleyes: ;)

Un saludo

David 08-06-2007 11:22:37

Hola

Ya casi tengo resuelto el problema , la verdad es que no es cuestión de poner una u otra sentencia que se me da bien , el caso era poner un campo agregado en el ClientDataSet ClientFactura, con el campo ClientObras , luego es importante crear un indice por el campo cliente , para filtrar , poner la propiedad indexname , cliente y grouplevel a 1 .

Y en expresion poner SUM(IMPORTE) , y ya esta , hay dos tablas que funcionan como maestro-detalle , y en el detalle , calcula la suma de todas las facturas de una obra determinada .

El titulo del post deberia de ser : Campos agregados en ClientDataSet.

Sólo hay un problema , y es que los valores los devuelve o bien en tipo variant o bien en tipo string , esto vale , se puede solucionar , pero lo que quiero es que cuando devuelva un nullo o un string vacio '' , pues que devuelva un valor por defecto , en este caso seria un 0 .

¿Alguien sabe como hacer para que un campo nullo en un campo agregado creado en un TClientDataSet , tenga el valor 0 por defecto ?

Ayer estuve todo el día liado con esto , al final me ayudo ver las últimas 2 hojas del capítulo 20 del libro la cara oculta de Delphi 6.


La franja horaria es GMT +2. Ahora son las 16:18:08.

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