FoxPro/Visual FoxPro - problema con decimales

   
Vista:

problema con decimales

Publicado por ovelit (126 intervenciones) el 28/03/2008 22:18:20
saludos foxeros, tengo el siguiente inconveniente

estoy ejecutando una formula q la extraigo de un campo memo, y la ejecuto de la siguiente manera

var=&formula

pero dentro de esa formula tengo una valor de esta manera

1.458,01

y con ese valor me da un error SYNTAX ERROR, osea error en la sinta....

ok cuando ese valor no tiene decimales osea de esta manera

1.458

si se ejecuta la formula
pero cuando le coloco los decimales me da el erroe q les comente

que me falta para q se me ejecute bien la formula con sus decimales
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problema con decimales

Publicado por Gabriel (112 intervenciones) el 29/03/2008 00:02:19
Hola, la coma decimal no existe. Lo que existe es el punto decimal.

Tu fórmula tendría que ser así: 1458.01

Ojo que cuando escribes 1.458 quiere decir que tienes 3 decimales.

Suerte.

Gabriel.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con decimales

Publicado por ovelit (126 intervenciones) el 29/03/2008 14:17:48
ok ya resolvi lo de la formula con esa sugerencia que me diste PERO.

ESE REGISTRO TIENE QUE IR IMPRESO EN UN REPORTE CON SU SEPARADOR DE MILES Y DECIMALES ,PORQ ESE VALOR ES UN SUELDO OSEA DE ESTA MANERA

1.458,01

COMO HARIA EN ESE CASO SI EN LE REGISTRO DONDE TENGO ALMECENADO ESE VALOR LO TENGO DE ESTA MANERA
1458.01
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con decimales

Publicado por Gabriel (112 intervenciones) el 30/03/2008 01:33:47
Hola, podrias crearte una función que haga el trabajo de formatear dicho monto
Por ejm, asumamos que el monto máximo sería n(9,2) o sea 9 enteros y 2 decimales.

* Esta función retornaría una cadena de caracteres. de la forma: 999.999,99
Function formatear_monto
lparameter pMonto && Parámetro(monto) Ejm 251458.01
* Convertimos a caracter.
cMonto = alltrim(str(pMonto, 9, 2))
* Capturamos los enteros.
cEnteros = left(cMonto, at('.', cMonto) - 1)
* Capturamos los decimales.
cDecim = right(cMonto, at('.', cMonto) + 1)

* Ahora formateamos la parte numérica.
nLen = len(alltrim(cEnteros)) &&Cantidad de carac...

Do case
case nLen <=3
cEnteros = cEnteros+','+cDecim
case between(nLen, 4, 6)
cEnteros = left(cEnteros, nLen - 3)+'.'+right(cEnteros, 3)+','+cDecim
endcase
return cEnteros
endfunc

Lo llamarias así:

cMonto = formatear_monto(nMonto)

cMonto = formatear_monto(251458.01) && Retornaría 251.458,01

Prúebalo, pues yo estoy fuera de casa y no lo he podido probar, quizá se me haya pasado algo.

Suerte.

PD. La función la debes crear en tu programa(*.prg) y cargarlo cuando inicias el sistema.

Atentamente: Gabriel Sánchez.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar