Principales respuestas
Separador de miles y decimales

Pregunta
-
Tengo un txtDocumento, que deseo que se muestre con el punto separador de miles, si bien así se muestran en la Base Access, en el TextBook se muestra sin puntos ¿Cómo puedo arreglarlo?
Lo mismo con respecto a otro txtPesoNac, que deseo se muestre con 3 decimales, por ejemplo: 3,550 - que en este caso si lo pongo así en la base, en el TextBook, se redondea y se muestra 4 - ??????
Respuestas
-
"Estedu" escribió:
> Tengo un txtDocumento, que deseo que se muestre con el punto separador de miles,
> si bien así se muestran en la Base Access, en el TextBook se muestra sin puntos
> ¿Cómo puedo arreglarlo?Para que el número se muestre como lo hace en Acces, tienes que formatearlo de igual manera que le has indicado a Microsoft Access que muestre los números formateados.
> Lo mismo con respecto a otro txtPesoNac, que deseo se muestre con 3 decimales,
> por ejemplo: 3,550 - que en este caso si lo pongo así en la base, en el TextBook,
> se redondea y se muestra 4 - ??????Si se redondea a 4 habría que ver el código que estás ejecutando para formatear el número, que más que formatear lo que te hace es redondear.
Para los valores que comentas que deseas formatear, ejecuta el siguiente ejemplo:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' Valores numéricos que deseamos formatear. ' Dim valorNumericoEntero As Decimal = 25693929D Dim valorNumericoDecimal As Decimal = 35878.3826D ' Mostramos el resultado con el carácter separador de miles ' existente en la cultura del subproceso actual. ' txtDocumento.Text = String.Format("{0:N0}", valorNumericoEntero) ' Mostramos el resultado con los caracteres separadores de miles ' y decimal, incluyendo tres dígitos decimales. ' txtPesoNac.Text = String.Format("{0:N3}", valorNumericoDecimal) ' End Sub
Si la cultura del subproceso actual es español de España, en el control txtDocumento se mostrará el valor 25.693.929 y en el control txtPesoNac el valor 35.878,383. En éste último sí se redondea por exceso el cuarto dígito decimal existente en el número decimal original.
Ni que decir tiene que para formatear un número mediante el método String.Format, éstos tienen que estar almacenados en una variable numérica (Integer, Long, Double, Single, Decimal, etc.); no sirve que sea un número almacenado en una variable String, porque aunque el valor se parezca a un número, no deja de ser un valor alfanumérico.
Es decir, el valor alfanumérico "35878.3826" (encerrado entre comillas dobles), se asemeja más al valor alfanumérico "¡Hola, Mundo!" que al valor numérico decimal 35878.3826D (sin comillas dobles). ;-)
Un saludo
Enrique Martínez Montejo
[MS MVP - VB]
Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.
Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.
Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción Option Strict.- Marcado como respuesta Estedu jueves, 23 de julio de 2015 2:01
-
"Estedu" escribió:
> Esto parece que funciona
¿Qué es lo que "parece que funciona"?
> Pero el tema es que solo muestra el valor numérico declarado en la
> variable Dim, como hago para que allí se muestre el documento
> registrado en la base, el cual como es de suponer, varia según el
> registro.Si los valores numéricos que deseas formatear los tomas de alguna base de datos, esos valores numéricos se los tienes que asignar a una variable declarada con el tipo de dato numérico adecuado (Integer, Decimal, Double, Single, etc.):
' Recuperamos los datos existente en la base de datos ' Dim valorBaseDatos As Decimal = LeerValorRegistro(parámetro1) ' Mostramos el resultado con el carácter separador de miles ' existente en la cultura del subproceso actual. ' txtDocumento.Text = String.Format("{0:N0}", valorBaseDatos)
Se comprende que el procedimiento LeerValorRegistro() es una función que tienes implementada en tu proyecto para leer un registro de la base de datos de acuerdo al valor del parámetro especificado, y devolver el valor del campo de la tabla que deseas formatear.
Enrique Martínez Montejo
[MS MVP - VB]
Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.
Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.
Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción Option Strict.- Editado Enrique M. MontejoModerator miércoles, 22 de julio de 2015 6:49
- Propuesto como respuesta Karen MalagónModerator miércoles, 22 de julio de 2015 20:13
- Marcado como respuesta Estedu jueves, 23 de julio de 2015 2:02
Todas las respuestas
-
Si quieres mostrar el valor con 2 decimales utiliza
Dim Valor As Double = 1234.56
TextBox1.Text = Valor.ToString("N2")Para tres decimales
Dim Valor As Double = 1234.56
TextBox1.Text = Valor.ToString("N3")Ten en cuenta también los tipos de variables en los que almacenas lo valores. Si son de tipo entero nunca te van a guardar los decimales.
Saludos, Javier J
-
"Estedu" escribió:
> Tengo un txtDocumento, que deseo que se muestre con el punto separador de miles,
> si bien así se muestran en la Base Access, en el TextBook se muestra sin puntos
> ¿Cómo puedo arreglarlo?Para que el número se muestre como lo hace en Acces, tienes que formatearlo de igual manera que le has indicado a Microsoft Access que muestre los números formateados.
> Lo mismo con respecto a otro txtPesoNac, que deseo se muestre con 3 decimales,
> por ejemplo: 3,550 - que en este caso si lo pongo así en la base, en el TextBook,
> se redondea y se muestra 4 - ??????Si se redondea a 4 habría que ver el código que estás ejecutando para formatear el número, que más que formatear lo que te hace es redondear.
Para los valores que comentas que deseas formatear, ejecuta el siguiente ejemplo:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' Valores numéricos que deseamos formatear. ' Dim valorNumericoEntero As Decimal = 25693929D Dim valorNumericoDecimal As Decimal = 35878.3826D ' Mostramos el resultado con el carácter separador de miles ' existente en la cultura del subproceso actual. ' txtDocumento.Text = String.Format("{0:N0}", valorNumericoEntero) ' Mostramos el resultado con los caracteres separadores de miles ' y decimal, incluyendo tres dígitos decimales. ' txtPesoNac.Text = String.Format("{0:N3}", valorNumericoDecimal) ' End Sub
Si la cultura del subproceso actual es español de España, en el control txtDocumento se mostrará el valor 25.693.929 y en el control txtPesoNac el valor 35.878,383. En éste último sí se redondea por exceso el cuarto dígito decimal existente en el número decimal original.
Ni que decir tiene que para formatear un número mediante el método String.Format, éstos tienen que estar almacenados en una variable numérica (Integer, Long, Double, Single, Decimal, etc.); no sirve que sea un número almacenado en una variable String, porque aunque el valor se parezca a un número, no deja de ser un valor alfanumérico.
Es decir, el valor alfanumérico "35878.3826" (encerrado entre comillas dobles), se asemeja más al valor alfanumérico "¡Hola, Mundo!" que al valor numérico decimal 35878.3826D (sin comillas dobles). ;-)
Un saludo
Enrique Martínez Montejo
[MS MVP - VB]
Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.
Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.
Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción Option Strict.- Marcado como respuesta Estedu jueves, 23 de julio de 2015 2:01
-
Que tal amigo, puedes hacer de la siguiente forma usando una funcion para aplicar a todos los texBox
Ejemplo:
Public Function SeparacionMiles(Numero As String) As String
Return String.Format("{0:N0}", Convert.ToDouble(Numero))
End FunctiontexBox1.text=SeparacionMiles(texBox1.text.String())
OBS: Favor vota si te es útil la información.
Saludos
Bader Molinas - Paraguay
https://deveintel.wordpress.com/
- Editado Bader Molinas martes, 21 de julio de 2015 12:18
-
Esto parece que funciona, he puesto un Button1 para que se ejecute al pulsar el Button (luego pondría ese código en una función DocumentoTextBox_TextChanged).
Pero el tema es que solo muestra el valor numérico declarado en la variable Dim, como hago para que allí se muestre el documento registrado en la base, el cual como es de suponer, varia según el registro.
-
"Estedu" escribió:
> Esto parece que funciona
¿Qué es lo que "parece que funciona"?
> Pero el tema es que solo muestra el valor numérico declarado en la
> variable Dim, como hago para que allí se muestre el documento
> registrado en la base, el cual como es de suponer, varia según el
> registro.Si los valores numéricos que deseas formatear los tomas de alguna base de datos, esos valores numéricos se los tienes que asignar a una variable declarada con el tipo de dato numérico adecuado (Integer, Decimal, Double, Single, etc.):
' Recuperamos los datos existente en la base de datos ' Dim valorBaseDatos As Decimal = LeerValorRegistro(parámetro1) ' Mostramos el resultado con el carácter separador de miles ' existente en la cultura del subproceso actual. ' txtDocumento.Text = String.Format("{0:N0}", valorBaseDatos)
Se comprende que el procedimiento LeerValorRegistro() es una función que tienes implementada en tu proyecto para leer un registro de la base de datos de acuerdo al valor del parámetro especificado, y devolver el valor del campo de la tabla que deseas formatear.
Enrique Martínez Montejo
[MS MVP - VB]
Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.
Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.
Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción Option Strict.- Editado Enrique M. MontejoModerator miércoles, 22 de julio de 2015 6:49
- Propuesto como respuesta Karen MalagónModerator miércoles, 22 de julio de 2015 20:13
- Marcado como respuesta Estedu jueves, 23 de julio de 2015 2:02
-
Yo suelo utilizar lo siguiente:
FormatNumber(Decimal.Parse(Me.txtDecimal.Text), 2, TriState.UseDefault, TriState.UseDefault, TriState.True)
y la verdad es que nunca he tenido problemas.
te adjunto una url donde se explica los parámetros del método FormatNumber:
Un saludo.
Solo unos pocos marcan las diferencias. Tu mismo
- Propuesto como respuesta Karen MalagónModerator miércoles, 22 de julio de 2015 20:13