Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error en campo calculado ? (https://www.clubdelphi.com/foros/showthread.php?t=28333)

Coco_jac 16-12-2005 02:07:29

Error en campo calculado ?
 
HOla amigos del foro, tengo una duda, trato de obtener un campo calculado de una consulta realizada

Código:

 
Select SUM(IMPORTE)from CUEN01 where CCONREFER='N' and cclie='AB001'

lo obtengo asi:
Código:

 
Saldo1:=strtofloat(SQLquery.fields[0].AsString);  // SQLquery:Tquery

Esa consulta me devuelve la suma del campo IMPORTE , cuyos registros tengan su CCONREFER='N' , tengo un caso que la suma deberia ser 16.50 , pero obtengo 16.45545 cosa que es raro, a que se puede deber.?, de manera que altera todo mi calculo.............

Utilizo tablas paradox.

Gracias anticipadas y espero sus cometarios

jachguate 16-12-2005 02:42:59

una diferencia de casi 4.5 centimos puede ser muy significativa, pero lo único que se puede decir con tan poca información es que seguramente en el motor donde almacenas los datos estos contienen fracciones que dan la suma.

Para finalizar, solo quiero comentar que ninguno de los motores con los que he trabajado presenta problemas para sumar números de esta manera (entre ellos están oracle, firebird, interbase, mysql, SQL Server, y unos cuantos mas).

Saludos.

Coco_jac 16-12-2005 18:32:56

Disculpen si no fui claro, sucede que tengo 2 consultas, las cuales son strings como son:

Código:


SQLFindKardexclieS1:
'Select SUM(IMPORTE) from CUEN01 where CCONREFER='N' and cclie='
 
SQLFindKardexclieS2:
'Select SUM(IMPORTE) from CUEN01 where CCONREFER='S' and cclie='
 
Un ejemplo, tabla : CUEN01
 
CCLIE        IMPORTE                CCONREFER
ñi008        16.50                        N
ñi008        16.50                        S



Mi codigo es el siguiente,utilizo el mismo query para hacer los calculos :

Código:


SQLquery:=ObtenerSQL(SQLFindKardexclieS1+chr(39)+Codigoclie+chr(39));
Saldo1:=strtofloat(SQLquery.fields[0].asstring);
 
SQLquery:=ObtenerSQL(SQLFindKardexclieS2+chr(39)+Codigoclie+chr(39));
Saldo2:=strtofloat(SQLquery.fields[0].asstring);
if Saldo1=Saldo2 then

..............................



Lo raro es que obtengo es que obtengo esto :

saldo1:=16.14999926 ------- N
saldo2:=16.5 --------S

Realizo un bucle realizando el codigo mostrado, pero el error que comento solo ocurre algunas veces........pero esas algunas veces malogran todo los calculos...........que puede ser, se que parece raro..

Espero sus cometarios

samantha jones 16-12-2005 23:41:29

Por lo que veo, estas haciendo calculos con las tablas de SAE de aspel, y me imagino que en paradox. En otros tiempos me toco sacar algunos reportes de dicho sistema, y tenía los mismos problemas, y si mi memoria no me falla lo solucione sumando el redondeo hacia arriba de 2 decimales en el campo importe de cada registro.

Saludos
Samantha Jones

Coco_jac 16-12-2005 23:56:31

Muchas gracias, sabes pense que yo estaba loco por estos resultados, nadie me creia......................

Coco_jac 19-12-2005 17:12:59

Gracias Samantha, eso era, un redondeo hacia arriba de 2 decimales, funciono bien gracias......................


La franja horaria es GMT +2. Ahora son las 07:54:11.

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