| |  |  | Miembros: Mensajes: Temas: Online: Ultimo Miembro: | | |  | | | 
| 
21-09-2005, 11:34:27
|  | Gran Participación en el Foro | | Registrado: abr 2004 Posts: 401
| | TextBox y Decimales Hola
Tengo untextbox en el que introduzco cifras con decimales. El problema es que si introduzco 0,87 y paso al siguiente textbox me combierte la cifra en 87
Si introduzco 0.87 y paso al siguiente textbox me pone 0,87
Lo que no entiendo es, si me muestra el simbolo decimal con una ',' por que no puedo introducir el valor con la ',' y tengo que hacerlo con '.'
Tengo la configuración regional en español (simbolo decimal ',').
Que puedo hacer para que me acepte la ',' para introducir los datos?
--Gracias-- | 
21-09-2005, 13:52:23
|  | Administrator | | Registrado: dic 2002 Ubicación: BURGOS - ESPAÑA Posts: 5.262
| | Es muy frecuente encontrarte con esta anomalía en el tratamiento del punto y la coma, salvo que utilices componentes apropiados para ingresar datos numéricos (MaskEdBox). Yo personalmente prefiero continuar con el TextBox y utilizar una rutina que prevea la corrección en el uso del signo decimal, tal como presento en el fichero adjunto. Con ello puedes ingresar coma o punto, a tu conveniencia.
La definición de las variables conviene que la hayas pública en un Módulo. Así te servirá para todos los formularios de tu proyecto. | 
21-09-2005, 13:58:19
|  | Gran Participación en el Foro | | Registrado: jul 2005 Ubicación: Libertad / Merlo prov Buenos Aires Posts: 206
| | Re: TextBox y Decimales Cita: |
Empezado por Insomnia17 Hola
Tengo untextbox en el que introduzco cifras con decimales. El problema es que si introduzco 0,87 y paso al siguiente textbox me combierte la cifra en 87
Si introduzco 0.87 y paso al siguiente textbox me pone 0,87
Lo que no entiendo es, si me muestra el simbolo decimal con una ',' por que no puedo introducir el valor con la ',' y tengo que hacerlo con '.'
Tengo la configuración regional en español (simbolo decimal ',').
Que puedo hacer para que me acepte la ',' para introducir los datos?
--Gracias-- | Este código sirve para convertir en un valor DOUBLE al texto que escribas en la caja, y luego al perder el foco esta, te muestra el valor con un formato de punto decimal y dos dígitos obligatorios detrás de el. Dicho código es indiferente al tipo de configuración de la máquina, tu deberías escribir " , " para números decimales y " . " para los miles y millones.
Private Sub txtNumber_LostFocus()
On Error Resume Next
txtNumber.Text = Format(CDbl(txtNumber.Text), _
"#,###,###,##0.00####")
End Sub
Private Sub txtNumber_GotFocus()
' On Error is necessary to account for empty fields.
On Error Resume Next
txtNumber.Text = CDbl(txtNumber.Text)
End Sub
Lo único que debes hacer para que funcione correctamente es pegar el código en tu formulario y tener un textbox con (Nombre) idéntico a "txtNumber" o cambiar en el código el nombre del texbox.
Espero que sea lo que necesites. | 
22-09-2005, 07:29:35
|  | Gran Participación en el Foro | | Registrado: abr 2004 Posts: 401
| | Hola, gracias J.M.Movilla
He intentado aplicar tu ejemplo a mi caso, pero NADA no hay manera de que me funcione. He creado un pequeño ejemplo que muestra lo que estoy intentando hacer con mi proyecto.
Si pudieses echarle un vistazo...
P.D. Gracias juancarlosavalos ahora mismo me pongo a intentarlo de tu forma, ya comentare.
--Saludos-- | 
22-09-2005, 08:50:12
| | Moderador | | Registrado: dic 2002 Ubicación: Madrid Posts: 4.195
| | Si utilizas un texto con formato puede provocar confusiones al conversor de tipos. Por ejemplo Cdbl("3123.415") devuelve una cifra completamente diferente si el separador decimal es ','. Para solucionar este 'quebradero de cabeza' y garantizar que todo funciona según lo previsto, desarrolle una función que lo convierte. Código: Public Function DConv(v As Variant) As Variant
On Local Error Resume Next
If InStrRev(v, ",") <> 0 Then
DConv = CDbl(v)
ElseIf InStrRev(v, ".") <> 0 Then
DConv = CDbl(Val(v))
Else
DConv = CDbl(Val(v))
End If
End Function Espero que te resulte útil. | 
22-09-2005, 12:25:27
|  | Gran Participación en el Foro | | Registrado: jul 2005 Ubicación: Libertad / Merlo prov Buenos Aires Posts: 206
| | Si enlazas la caja de texto directamente con la tabla, la única forma de escribir las cosas es en formato tradicional (ingles), asi que tu text2 solo reconoce el " . " para anotaciones decimales. Aunque intentes darle formato no te respondera, pues esta vinculada con la tabla, con lo cual debes usar otro forma de vincular los datos con la tabla, para poder validar estos antes de editarlos en la base.
Espero que te sirva mi humilde colaboración. | 
22-09-2005, 14:28:07
| | Buena Participación en el Foro | | Registrado: sep 2005 Ubicación: Buenos Aires - Argentina Posts: 48
| | Les comento que hace mas de 4 ños hemos tenido que realizar un sistema de gestion administrativo, para lo cual el ingreso de cantidades e importes era moneda corriente, para lo cual mi compañero realizó un control de usuario, que te adjunto, que parte de codigo se hace mención en el proyecto aportado por Jose Maria.
Es que les envio este control para dicho tema.
Saludos, Cita: |
Empezado por J.M.Movilla Es muy frecuente encontrarte con esta anomalía en el tratamiento del punto y la coma, salvo que utilices componentes apropiados para ingresar datos numéricos (MaskEdBox). Yo personalmente prefiero continuar con el TextBox y utilizar una rutina que prevea la corrección en el uso del signo decimal, tal como presento en el fichero adjunto. Con ello puedes ingresar coma o punto, a tu conveniencia.
La definición de las variables conviene que la hayas pública en un Módulo. Así te servirá para todos los formularios de tu proyecto. |
__________________
Julio Alberto Garcia Deu
| 
23-09-2005, 06:48:48
|  | Gran Participación en el Foro | | Registrado: abr 2004 Posts: 401
| | Gracias a todos por la ayuda
Creo que ya lo he solucionado, y de una forma muy sencilla, al principio meti este código en el keypress Código: If KeyAscii = 44 Then KeyAscii = 46 De esa forma al pulsar ',' en realidad el usuario escribia un '.'. Pero mirando un poco he descubierto una propiedad del TextBox, DataFormat, que poniendolo como número, puedo introducir los decimales con el simbolo ','. He visto como relaciona los datos con access y de momento parece que funciona muy bien.
Alguien ve algún inconveniente en trabajar con cifras de esta forma?, quiero decir, puede darme algún problema realizarlo de esta manera?.
--Saludos-- | 
23-09-2005, 07:59:51
|  | Administrator | | Registrado: dic 2002 Ubicación: BURGOS - ESPAÑA Posts: 5.262
| | Pues, ¿qué quieres que te diga, amigo Insomnia17? Que no entiendo por qué quieres poner los decimales con la coma, con lo cómodo y práctico que es utilizar el punto como todo el mundo... Porque ¿tú no utilizas el teclado numérico para introducir las cantidades?... Y si tienes ahí el punto, ¿Por qué tienes que ir a buscar la coma en el teclado alfabético? Yo creo que debes usar los métodos estándar, que son los que utiliza el 95 % de los usuarios... Ésa es mi opinión. | 
26-09-2005, 07:29:25
|  | Gran Participación en el Foro | | Registrado: abr 2004 Posts: 401
| | Hola
La verdad es que yo creo que siempre he introducido la coma con la tecla ',' y ademas como ahora trabajo con un portatil, pues no tengo teclado numérico.
Gracias por el comentario, supongo que consultare con los usuarios del programa y tendré en cuenta la forma mas sencilla para ellos.
--Saludos-- | | Herramientas | | | | Desplegado | Mode Lineal |
Normas de Publicación
| no Puedes crear nuevos temas no Puedes responder a temas no Puedes adjuntar archivos no Puedes editar tus mensajes Código [IMG] está habilitado Código HTML está deshabilitado | | | La franja horaria es GMT. Ahora son las 21:04:09.
Powered by vBulletin® Version 3.6.8 Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design
|  |