Solucionar formato de número de windows en visual basic (vb6)
Bienvenidos a Vertutoriales.com, hoy os traigo una función que construí para darle solución a un problema que me encontré con el formato de números de windows y no tener que cambiar el formato del sistema de “.” a “,”
Está claro que si estamos desarrollando una aplicación de gestión el teclado numérico será muy utilizado y que además, para el símbolo decimal será pulsado la tecla de . *punto. Esto no puede ser un problema si los números al guardarse en la base de datos recoge el punto como decimal, pero por defecto el sistema tiene puesto el . *punto como separador de miles y la “,” *coma como símbolo decimal.
A esto hay que sumarle que si estamos tomando datos desde un textbox y queremos eliminar cualquier tipo de problema al tratar el dato, podemos utilizar la función Val(cadena) para pasarlo a double, pero la función Val() también acarrea que el símbolo decimal sea el “.” y si traemos datos de otro lado, vendrá con la “,”
¿Qué hacer entonces?
Bueno, en mi caso al principio cambié el formato por defecto en el sistema operativo, es decir, el separador de miles pasó a ser la ‘,’ y el símbolo decimal el “.” y para pequeños negocios no tuve problema, así que es una fácil y rápida solución, pero cuando la aplicación empezó a hacerse más grande a la vez que los clientes, esta solución no era factible ya que tenía que convivir con otras aplicaciones y daban problemas por el formato del número. Así que me construí mi propia función ValDk y sustituí todas las existentes Val() por ValDk()
La función ValDk(cadena as variant)
‘Esta función convierte cualquier valor a double
Function ValDk(Valor) As Double‘Esta operación es para controlar el . o la ,
Valor = Replace(“” & Valor, “,”, “.”)
ValDk = CDbl(Valor)End Function
Creo que la función está bastante clara, pero la explico brevemente, lo primero que hago es reemplazar las posibles “,” por “.” y luego utilizo la función Val que ha de tener el “.” como símbolo para su operación, de esta manera, ya sea insertando un “.” o una “,” siempre va a dejar el número como double que es lo que andamos buscando!
Si tenéis otra solución estaré encantado de que la comentéis!