Error de conversión que no puedo solucionar

Mi configuración internacional esta configurada con este
formato de numero y quiero seguir trabajando con este
formato: "999,999.99" . O sea, coma como separador de miles y punto para decimales.
Tengo Visual FoxPro 6.
Ahora tengo este problema: en un campo o variable texto
tengo, por ejemplo, este valor "123,456.78" y no hay forma de
convertirlo correctamente a ningún tipo numérico. Cuando
aparecen a la vez la coma y el punto la función VAL() falla
devolviendo mal la conversión. Cuando esta el punto solo, convierte bien. En VISUAL BASIC hay funciones
especificas para hacer la conversión a algún tipo
numérico: CCUR(), CSNG(), CDBL(), que trabajan
correctamente con la configuración numérica que tenga la
maquina en ese momento. No se como hacer lo mismo con
Visual FoxPro.

1 respuesta

Respuesta
1
No te preocupes tanto por la conversión de datos, si no por la forma de presentarlos y para eso existe la propiedad formato y mascara de entrada que si haces una buen uso de estas propiedades tus datos se almacenaran correctamente.
Por ejemplos puedes utilizar la mascara de entrada "999,999.99"
y formato R
Para que se muestren con la mascara pero se almacena el numero simple por ejemplo
Si tienes el numero 10525.36... ¿así se almacena y se presenta así 10,525.36 ok?
Comprendo tu sugerencia, pero es que yo necesito específicamente hacer esa tarea. Supone que el usuario ingresa un dato, con mascara, formato, etc. Todo perfecto. Ese dato lo guardo en un subitem de un List View, o en un ListBox para que sea más sencillo, y después tengo que tomar de nuevo el dato, pero de la lista. No puedo usar ItemData, Tag, o cualquier otro truco. Para hacer esto tengo que hacer la conversión de texto, que es el formato en el listview o en el listbox, a numero... No he encontrado una forma de hacerlo...
Espero que tengas ganas de encontrarme una solución... Un saludo
La propiedad value del control List ¿No te sirve?... o es que no termino de comprender que tarea es la que específicamente necesitas realizar... me podrías enviar tu formulario y explicarme un poco más detalladamente para que te sirve este formulario... a ver si termino de comprender y te ayudo...
[email protected]
Gracias foxuser, Ya lo solucione. Pero para que me entiendas que es lo que preguntaba el asunto es así:
Supone que el usuario ingresa muchos datos y esos datos los guardo en un listbox o en un listview. En los listbox o listview solo puedo guardar datos como tipo carácter. Ahora quiero volcar esos datos que ha ingresado, a una tabla. Los datos que estén en la lista o listview siempre van a ser tipo carácter, ¿ok?. O sea que si el usuario ingreso un dato tipo numérico, primero tengo que hacer la conversión a carácter para guardarlo en la lista y después volver a convertirlo, de tipo carácter que esta en la lista, a numérico para guardarlo en la tabla. Esta segunda conversión siempre falla si el dato tiene separadores de miles y decimales a la vez. No hay ninguna función en fox que reconozca correctamente los separadores y que haga bien la conversión. Solución: usar STRTRAN() para eliminar los separadores de miles y recién usar VAL(). Un saludo
Ok... que bueno que ya lo solucionaste.. y gracias por la aclaración... me va a servir de mucho...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas