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 19-01-2011
martinartaza martinartaza is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 77
Poder: 14
martinartaza Va por buen camino
Question Truncar números a la hora de sumarlo con TQRExpr

Hola que tal, le comento estoy usando Delphi 6, con QReport y completando reportes, todos estos reportes le falta totalizar al final.
Después de evaluar cual seria el menor esfuerzo para modificar más de 50 reportes llegue a la conclusión, de agregar una banda Summary y poner por cada columna un TQExpr y usar la función Sum, el problema que tengo es que cuando veo un reporte y sumo a mano, no me da igual a lo que me arroja el TQExpr, esto se debe a que en los reportes se trunco las filas a la hora de mostrar los datos, entonces el TQExpr me suma con todos los decimales y me termina tirando distinto valor, que la suma de la hoja impresa.

Por ejemplo, tengo el siguiente dataset (qventas) y lo que muestra el reporte.
(los puntitos son espacio en blanco, es para mostrarlo ordenado)
Dataset. ............................................... Reporte

[Cliente] | [Cuenta] | [Neto] .......[Cliente] | [Cuenta] | [Neto]
1.......... | ... 101 .. | 20.56789 ....... 1 .... | ....101 .. | .. 20.56
1.......... | ... 102 .. | 20.00981 ....... 1 .... | ....102 .. | .. 20.00
2.......... | ... 201 .. | 20.00772 ....... 2 .... | ....201 .. | .. 20.00

Lo quiero que me aparezca al final del repote es --> Total = 60.56
Lo que me aparece ahora es = 20.58 porque 20.56789+ 20.00981 + 20.00772 me da un total de 20.58542 y al truncarlo me da 20.58, esa diferencia de 2 centavos se produce con un informe de 3 a 5 clientes, pero cuando tiro un listado de 5 hojas, la diferencia ya es demasiada significativa.

Para mostrar el total en el TQExpr estoy usando la siguiente formula.
Código Delphi [-]
QExpr1.Expression := SUM(q_Ventas.neto)
Lo que necesito seria algo como.
Código Delphi [-]
QExpr1.QExpresion  := SUM(FORMATNUMERIC('0.##',q_Ventas.neto))
La expresion anterior, no me muestra nada, debe ser que está mal a pesar que al validarla me dice que no hay drama.

Bueno espero que hayan entendido y necesito hacerlo de esa manera para no perder tiempo modificando un serie de reporte en la cual cada programador que paso por acá lo creo a su manera, hay reportes con códigos, otros con echos con consulta ,en fin se perdería mucho tiempo usando otro método.

Desde ya muchas gracias.
Responder Con Cita
  #2  
Antiguo 19-01-2011
Avatar de Aleca
Aleca Aleca is offline
Miembro
 
Registrado: may 2003
Ubicación: Venado Tuerto, Argentina
Posts: 277
Poder: 22
Aleca Va por buen camino
probala asi, por las dudas.
Código Delphi [-]
QExpr1.QExpresion  := FORMATNUMERIC(',0.00',SUM(q_Ventas.neto))
si no este componente tiene una propiedad Mask que es la que debas utilizar.
__________________
Aleca

Última edición por Aleca fecha: 19-01-2011 a las 21:48:29.
Responder Con Cita
  #3  
Antiguo 21-01-2011
martinartaza martinartaza is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 77
Poder: 14
martinartaza Va por buen camino
Gracias Aleca, pero me pasa lo mismo con la otra opción.

Eh probado

Código Delphi [-]
QExpr1.QExpresion  := FORMATNUMERIC(',0.00',SUM(q_Ventas.neto))

Y pasa lo mismo que con

Código Delphi [-]
QExpr1.QExpresion  := SUM(FORMATNUMERIC('0.##',q_Ventas.neto))

En los 2 casos la validación me sale bien, pero no me muestra nada.

Tengo el pdf de la cara oculta de delphi, dice que se le puede ampliar las funciones que trae el TQExpr, voy a ver si haciendo algo de eso.
Cualquier avance lo comunicare por acá.

PD: Tengo la suerte que esto no es urgente, así que prefiero buscar una solución más elegante que laboriosa.
Responder Con Cita
  #4  
Antiguo 21-01-2011
martinartaza martinartaza is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 77
Poder: 14
martinartaza Va por buen camino
Con esto le erro siempre por un centavo.

Código Delphi [-]
QExpr1.QExpresion  := SUM(INT(q_Ventas.neto) + (INT(FRAC(q_Ventas.neto) * 100))/100)

A pesar que es "larga" la función, va a ser rápido el cambio masivo.
Pero porque le erro por un centavo, alguien tiene idea.


Edito

No siempre, la verdad es que me anda bastante bien, pero aveces le erro por un centavo.

Última edición por martinartaza fecha: 21-01-2011 a las 20:43:28. Razón: no hacer las pruebas suficientes a la hora de afirmar algo.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
if con 2 condiciones en un TQrexpr lucasarts_18 Impresión 2 02-01-2009 23:41:37
truncar números reales en Firebird David Olmos SQL 1 17-05-2008 00:11:27
Un problemilla con TQRExpr k2k2k2 Impresión 8 09-06-2006 17:17:05
TQRExpr y los decimales Novás Impresión 3 08-01-2004 17:18:02
funcion sum del tqrExpr Novás Impresión 1 22-10-2003 19:23:13


La franja horaria es GMT +2. Ahora son las 18:42:27.


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