Foros del Web » Programación para mayores de 30 ;) » .NET »

Permitir solo números con 2 decimales y no letras en el datagriview en vb.net

Estas en el tema de Permitir solo números con 2 decimales y no letras en el datagriview en vb.net en el foro de .NET en Foros del Web. Hola a todos como están necesito ingresar números con 2 decimales en mi datagridview para luego grabar bueno estuve buscando en la web y hay ...
  #1 (permalink)  
Antiguo 24/06/2010, 14:54
Avatar de CarmenRocio  
Fecha de Ingreso: junio-2010
Ubicación: Perú - Lima - Chorrillos
Mensajes: 116
Antigüedad: 13 años, 10 meses
Puntos: 8
De acuerdo Permitir solo números con 2 decimales y no letras en el datagriview en vb.net

Hola a todos como están necesito ingresar números con 2 decimales en mi datagridview para luego grabar bueno estuve buscando en la web y hay un código que te permite hacer algo así por ejemplo en este código que cambie tu puedes ingresar números del 1,2,3,4,5,6,7,8,9,0 y además un solo “.” O coma”,” si es que lo cambias pero el problema de este código es que después del punto ingresas varios decimales por ejemplo 12.33389 y quiero solo ingresar 2 decimales por favor me pueden ayudar con este problemita que tengo y si hay otra forma mejor le agradecería mucho.
Gracias.

Código:
Private Sub dgvUit_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles dgvUit.EditingControlShowing
        If e.CellStyle.Format = "N2" Then
            AddHandler e.Control.KeyPress, AddressOf validar_Keypress
End If

Private Sub validar_Keypress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        'Obtener indice de la columna 
        Dim columna As Integer = dgvUit.CurrentCell.ColumnIndex
        ' Verificar columna actual 
        If columna = 2 Then
            Dim caracter As Char = e.KeyChar
            ' referencia a la celda 
            Dim txt As TextBox = CType(sender, TextBox)
            ' Comprobar si es un número con isNumber, si es el backspace, si el caracter 
            ' es el separador decimal, y que no contiene ya el separador 
            If (Char.IsNumber(caracter)) Or (caracter = ChrW(Keys.Back)) Or (caracter = ".") And (txt.Text.Contains(".") = False) Then
                e.Handled = False
            Else
                e.Handled = True
            End If
        End If
End Sub
  #2 (permalink)  
Antiguo 24/06/2010, 15:27
Avatar de CarmenRocio  
Fecha de Ingreso: junio-2010
Ubicación: Perú - Lima - Chorrillos
Mensajes: 116
Antigüedad: 13 años, 10 meses
Puntos: 8
Respuesta: Permitir solo números con 2 decimales y no letras en el datagriview en vb.

Bueno como no encontre hasta el momento nada por mientras he cambiado el formato de mi columna a moneda para cuando yo registre no me salga error. el formato de moneda es "C2"
y C2 lo cambias por N2 en sub dgvUit_EditingControlShowing del datagridview.
si yo registro por ejemplo 12.5555 y le doy grabar lo graba como 12.56 espero que me puedan seguir ayudando aqui gracias
  #3 (permalink)  
Antiguo 25/06/2010, 15:58
Avatar de gakutaru  
Fecha de Ingreso: agosto-2005
Ubicación: frente a mi NtbK
Mensajes: 239
Antigüedad: 18 años, 7 meses
Puntos: 6
Respuesta: Permitir solo números con 2 decimales y no letras en el datagriview en vb.

m...
se me ocurre que, si es para validar una textbox, lo mas elegante seria con javascript.

si no es el caso, y lo que necesitas es mostrar 2 decimales porque se ve feo con muchos decimales el numero. entonces puedes acortar lo que muestas, asi:

Código vb:
Ver original
  1. <html>
  2. <head>
  3. <script runat="server">
  4.     Sub Page_Load()
  5.         Dim fltNumero As Decimal = 3243422.3434343
  6.         Label1.Text += "<li>" & fltNumero.ToString("#,0.##") & "</li>" 'mostrara 3.243.422,34
  7.        Label1.Text += "<li>" & fltNumero.ToString("#.##") & "</li>" 'mostrara 3243422,34
  8.    End Sub
  9. </script>
  10. </head>
  11. <body>
  12. <form runat="server">
  13. <asp:Label runat="server" ID="Label1"  />
  14. </form>
  15. </body>
  16. </html>

ahora si no importa en tus calculos el margen de error al quitar los decimales.

puedes utilizar una funcion que busque el punto o la coma y cuando la encuentre cortar el numero, la logica seria
determinar el largo del numero (La Funcion Len() de VB hace eso)
y con la Funcion Mid() vas cortando la cadena,
asi buscas en cada caracter con la funcion Mid mientras dure el largo, cuando encuentre una coma tomas los siguentes dos caracteres y creas el numero, al final devuelves un tipo decimal, eso se me ocurre que puedes hacer, pero la clave esta en utilizar conrrectamente la funcion Mid y Len

aqui lo que hace la funcion Mid:

Código vb:
Ver original
  1. ' Creates text string.
  2. Dim TestString As String = "Mid Function Demo"
  3. ' Returns "Mid".
  4. Dim FirstWord As String = Mid(TestString, 1, 3)
  5. ' Returns "Demo".
  6. Dim LastWord As String = Mid(TestString, 14, 4)
  7. ' Returns "Function Demo".
  8. Dim MidWords As String = Mid(TestString, 5)

espero te sirva.
  #4 (permalink)  
Antiguo 26/06/2010, 08:34
Avatar de CarmenRocio  
Fecha de Ingreso: junio-2010
Ubicación: Perú - Lima - Chorrillos
Mensajes: 116
Antigüedad: 13 años, 10 meses
Puntos: 8
De acuerdo Respuesta: Permitir solo números con 2 decimales y no letras en el datagriview en vb.

hola como estas gracias por contestarme no puedo trabajar con javascript actualmente trabajo con vb.net 2008 pero bueno gracias de todas maneras por darme una idea.

Etiquetas: letras, permitir
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:20.