Ver Mensaje Individual
  #3 (permalink)  
Antiguo 25/06/2010, 15:58
Avatar de gakutaru
gakutaru
 
Fecha de Ingreso: agosto-2005
Ubicación: frente a mi NtbK
Mensajes: 239
Antigüedad: 19 años, 3 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.