• Jueves 19 de Mayo de 2022, 11:50

Autor Tema:  Convertir texto a numerico desplazando la coma correctamente  (Leído 1740 veces)

nibiru

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Convertir texto a numerico desplazando la coma correctamente
« en: Lunes 20 de Diciembre de 2010, 11:04 »
0
Hola, no consigo hacer una formula, a ver si alguien me pudiera ayudar a CONVERTIR UN CAMPO TIPO TEXTO EN NUMERICO Y PONER LA COMA EN EL LUGAR CORRECTO, tengo crystal reports ver 9.2

Tengo un campo 'Importe' que se almacena como tipo STRING es decir como tipo TEXTO
Por ejemplo:

Si tengo 1310,42€ lo guarda como 1310.42000
Si tengo 121€ lo guarda como 121.00000

Necesito convertirlo a numerico porque tengo que operar con el (hacer sumatorias,etc) pero no me lo convierte bien.

He probado con esta formula:
tonumber({FLD19})
1310.42000 lo convierte en 131,042,000

Con esta otra formula:
tonumber((Mid(trim({FLD19}),1,Instr(trim({FLD19}),'.')+2)))
1310.42000 lo convierte en 131,042

Con esta otra formula:
truncate(tonumber(Mid(trim({FLD19}),1,Instr(trim({FLD19}),'.')+2))-2)
1310.42000 lo convierte en 131,040

¿HAY ALGUNA FUNCION PARA DESPLAZAR LA COMA Y QUE EL CAMPO SIGA PASANDOLO A NUMERICO?
¿COMO PUEDO CONVERTIRLO EN NUMERICO PERO PONIENDO LA COMA DONDE YO QUIERA?

He hecho muchas pruebas mas, por ejemplo:
Mid(trim({FLD19}),1,Instr(trim({FLD19}),'.')-1)&','&Mid(trim({FLD19}),Instr(trim({FLD19}),'.')+1,2)
1310.42000 lo convierte en 1310,42 pero el problema es que no lo convierte a numerico, lo reconoce como string y por eso no me sirve esta.

Muchas gracias

nibiru

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Convertir texto a numerico desplazando la coma correctamente
« Respuesta #1 en: Viernes 24 de Diciembre de 2010, 09:24 »
0
YA LO CONSEGUI!!!!!

Que alegria y en Nochebuena ademas, os cuento como he conseguido convertir el campo tipo texto a numerico con los decimales en la posicion correcta por si a alguno os pudiera servir, he usado la siguiente formula:

tonumber(Mid(trim({AH172.FLD19}),1,Instr(trim({AH172.FLD19}),'.')-1))
+
(tonumber(Mid(trim({AH172.FLD19}),Instr(trim({AH172.FLD19}),'.')+1,2))/100)

La primera linea con que hace es extraer desde el primer digito hasta el caracter que hay antes de la coma (con la funcion INSTR que devuelve la posición de la primera aparición de una cadena dentro de otra (campo, cadena texto a buscar) le pongo que busque hasta la coma menos una posicion con ...   ',')-1   ...

La segunda linea extrae dos digitos despues de la coma dividido entre 100 para que lo que hay detras de la coma se tenga en cuenta como decimal.

Y sumo las dos partes para que me de como resultado el numero entero + el decimal y ya tenga el numero final con todo.

Aunque no ha habido respuesta, muchas gracias de todas formas por la pagina y la ayuda que haceis desinteresadamente.
Besos, felices fiestas y os deseo de corazon prospero año a todos y mucho amor.... :)