• Domingo 22 de Diciembre de 2024, 06:18

Autor Tema:  text con numeros  (Leído 4692 veces)

master33

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
text con numeros
« en: Miércoles 29 de Abril de 2009, 17:08 »
0
Hola, tengo unos textbox que almacenan numeros (ingresados por teclado) y lo que necesito es que aparescan los puntos como separdor de miles y no lo se hacer de antemano gracias

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: text con numeros
« Respuesta #1 en: Miércoles 29 de Abril de 2009, 19:09 »
0
Cita de: "master33"
Hola, tengo unos textbox que almacenan numeros (ingresados por teclado) y lo que necesito es que aparescan los puntos como separdor de miles y no lo se hacer de antemano gracias
tendrias que ir recorriendo el textbox caracter por caracter para que cuando hayas revisado 3 le agregues ahi una coma o punto o un espacio (que es lo que ahora se utiliza para separar miles), con la ayuda de la funcion mid (cadena, inicio, final) puedes partir tu cadena donde lo necesites e introducir ahi la coma o el punto, por ejemplo se introduce el numero 89325 en el textbox para separar los miles y ver 89,325, deberias recortar la cadenas con mid (text1.text,1,2) estarias recortando desde el caracter 1 hasta el 2 o sea 89, luego con mid(text1.text,3,5) obtendrias el 325 y seria de lo que te da el primer mid + ","+ lo que te da el otro mid y ya tendrias el dato deseado, aqui te dejo la rutina, pruebala con dos textbox y un commandbutton
Código: Visual Basic
  1. Private Sub Command1_Click()
  2. a = Len(Text1.Text) 'en text1.text se introduce el numero
  3. dato = Text1.Text
  4. b = a
  5. lazo:
  6. b = b - 3
  7. If b <= 0 Then
  8. GoTo fin
  9. Else
  10. a = Len(dato)
  11. dato1 = Mid(dato, 1, b)
  12. dato2 = Mid(dato, b + 1, a)
  13. dato = dato1 + "," + dato2
  14. End If
  15. GoTo lazo
  16. fin:
  17. Text2.Text = dato 'en text2.text queda el numero separado
  18. End Sub
  19.  
 

Eso es lo que se me ocurrio :comp: , podrian haber otras formas pero por ahora no veo otra  :blink:


saludos.
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: text con numeros
« Respuesta #2 en: Miércoles 29 de Abril de 2009, 19:27 »
0
Puedes usar ademas del codigo de TOPH, la funcion format

Código: Visual Basic
  1. Private Sub Text1_Validate(Cancel As Boolean)
  2.   Me.Text1 = Format(Me.Text1, "###,###,##0.00")
  3. End Sub
  4.  
  5.  

Tambien Existe el control, MaskEditBox


Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: text con numeros
« Respuesta #3 en: Miércoles 29 de Abril de 2009, 19:36 »
0
Cita de: "F_Tanori"
Puedes usar ademas del codigo de TOPH, la funcion format

Código: Visual Basic
  1. Private Sub Text1_Validate(Cancel As Boolean)
  2.   Me.Text1 = Format(Me.Text1, "###,###,##0.00")
  3. End Sub
  4.  
  5.  

Tambien Existe el control, MaskEditBox


Saludos

 :P mucho mas facil asi, una pregunta F_Tanori para utilizar otro tipo de separador como un punto o simplemente un espacio ¿se puede de la misma forma?

EDIT: :P me respondo a mi misma pense que era tan facil como cambiar ###.###.##. o poner espacios pero con punto definitivamente no funciona y con espacio da problema en numeros grandes

saludos.
« última modificación: Miércoles 29 de Abril de 2009, 19:55 por Toph »
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: text con numeros
« Respuesta #4 en: Miércoles 29 de Abril de 2009, 19:40 »
0
Efectivamente, con format$ , además hay que usarlo en el evento validate tal como muestra F_Tanori, pero de paso aprovechamos para comprobar si está dentro de los valores deseados.
Aquí el ejemplo completo que formatea el número pero además controla si el valor introducido está dentro del rango 5-100, esto es no acepta otros valores distintos de los de dicho rango.

Código: Visual Basic
  1.  
  2. Private Sub Text1_Validate(Cancel As Boolean)
  3.     Text1.Text = Format$(Text1.Text, "##,##0.00")
  4.     If (Val(Text1.Text) < 5) Or (Val(Text1.Text) > 100) Then
  5.         Beep
  6.         Cancel = True
  7.     End If
  8. End Sub
  9.  
  10.  

Por supuesto el control text1 debe tener su propiedad CausesValidation a True, de otro modo no recibe dicho evento... (por defecto Causesvalidation se establece a True, por lo que salvo que se cambie desde código no haría falta cambiarlo, pero para prevenir despistes quizás convenga añadir una línea en la carga del formulario:

Código: Visual Basic
  1.  
  2.     Private Sub Form_Load()
  3.     Text1.CausesValidation = True
  4. End Sub
  5.  
  6. y por último si quieres eliminar los decimales cuando estos son ceros el siguiente código lo muestra... sólo lo elimina cuando el valor ha sido 'validado', para no hacer pensar al usuario que el problema son los decimales...
  7.  
  8. [code=vb]
  9.     Private Sub Text1_Validate(Cancel As Boolean)
  10.     Text1.Text = Format$(Text1.Text, "##,##0.00")
  11.     If (Val(Text1.Text) < 5) Or (Val(Text1.Text) > 100) Then
  12.         Beep
  13.         Cancel = True
  14.     Else
  15.         If Right$(Text1.Text, 2) = "00" Then
  16.             Text1.Text = Format$(Text1.Text, "##,##0")
  17.         End If
  18.     End If
  19. End Sub
  20.  
  21.  
 
[/code]
«Ma non troppo»
----> ModoVacaciones = False<----

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: text con numeros
« Respuesta #5 en: Miércoles 29 de Abril de 2009, 20:48 »
0
Cita de: "Toph"
:P mucho mas facil asi, una pregunta F_Tanori para utilizar otro tipo de separador como un punto o simplemente un espacio ¿se puede de la misma forma?

EDIT: :P me respondo a mi misma pense que era tan facil como cambiar ###.###.##. o poner espacios pero con punto definitivamente no funciona y con espacio da problema en numeros grandes

saludos.
Si, hay que tener cuidado, piensa que cada '#' representa una cifra, entonces una cifra sólo reconoce números y los signos de puntuación de números. Si los signos de puntuación provocan desbordamiento dará error, en el siguiente ejemplo la idea era colocar dentro del formato la parte: 'H:' precisamente por el error indicado como se ve se trata aparte.
Aunque parezca limitado en realidad no lo es (aunque superar ese límite resulta tedioso), ya que podemos encadenar varios formateos:  (texto= formato(a) & formato (b) & ... formato(n))


Código: Visual Basic
  1. ' por ejemplo introduce la cadena: 123456789 y saldrá formateada como: 'H: 123 456 789-V', notar como H: convenientemente se ha dejado previo (parte del formato, pero inicial)
  2. Private Sub Text2_Validate(Cancel As Boolean)
  3.     Text2.Text = "H:" & Format$(Text2.Text, " ### ### ###-V")
  4. End Sub
  5.  

Otro ejemplo para terminar... Aquí necesitamos que el usuario ingrese un valor de 7 cifras que luego nosotros formateamos, el formato tiene 12 cifras, sin embargo el usuario nunca podrá escribir más de 7

' previamente en diseño o en la carga del formulario establecemos el límite que deseamos, esto es:
Text4.MaxLength = 7

' antes de dar formato establecemos el nuevo largo (que ya sabemos el tamaño resultante) , luego volvemos a fijar la longitud del 'usuario'
' el resultado es que el usuario no puede ingresar más de 7 caracteres, pero nosotros si podemos mostrarle más...
Código: Visual Basic
  1. Private Sub Text4_Validate(Cancel As Boolean)
  2.     Text4.MaxLength = 12
  3.     Text4.Text = Format$(Text4.Text, "0## #### ###")
  4.     Text4.MaxLength = 7
  5. End Sub
  6.  

Si al ejemplo anterior le cambios el 0 del formato por una X es decir el siguiente código: el formato nunca rellenará hasta 12 caracteres, con la X , sólo pondrá una X
La razón es que hay caracteres literales y caracteres comodín, el '0' es un carácter comodin como lo es  '#', pero  otros caracteres son comodín de si mismos...
Hay algunos caracteres significativos, por ejemplo format$(texto ">") convierte a mayúsculas el 'texto' y el '<' a minúsculas...

Código: Visual Basic
  1. Private Sub Text4_Validate(Cancel As Boolean)
  2.     Text4.MaxLength = 12
  3.     Text4.Text = Format$(Text4.Text, "X## #### ###")
  4.     Text4.MaxLength = 7
  5. End Sub
  6.  
«Ma non troppo»
----> ModoVacaciones = False<----

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: text con numeros
« Respuesta #6 en: Miércoles 29 de Abril de 2009, 21:06 »
0
Decir también que hay formatos predefinidos para los tipos generícos de datos, los cuales se pueden invocar por sus nombres i pasar mediante una enumeración..

Un ejemplo que va pasando por diferentes formatos... tras exponer cada formato realiza una pausa de unos 3 segundos...

Código: Visual Basic
  1.  
  2. Private Sub Text5_Validate(Cancel As Boolean)
  3.     Dim t As Single
  4.     ' formato moneda basado en la configuración regional del equipo
  5.    Text5.Text = Format$(Text5.Text, "Currency")
  6.    
  7.     t = Timer
  8.     Do
  9.         DoEvents
  10.     Loop While (Timer - t) < 3
  11.     ' este es equivalente al que solicitaba el usuarioal abrir el post
  12.    Text5.Text = Format$(Text5.Text, "Standard")
  13.    
  14.     t = Timer
  15.     Do
  16.         DoEvents
  17.     Loop While (Timer - t) < 3
  18.     ' con decimales... sin puntuación
  19.    Text5.Text = Format$(Text5.Text, "Fixed")
  20.    
  21.     t = Timer
  22.     Do
  23.         DoEvents
  24.     Loop While (Timer - t) < 3
  25.    ' notación científica
  26.    Text5.Text = Format$(Text5.Text, "Scientific")
  27.    
  28.     t = Timer
  29.     Do
  30.         DoEvents
  31.     Loop While (Timer - t) < 3
  32.     ' sin formato...
  33.    Text5.Text = Format$(Text5.Text, "General Number")
  34.    
  35.     t = Timer
  36.     Do
  37.         DoEvents
  38.     Loop While (Timer - t) < 3
  39.     '  si es cero devuelve false, en otro caso devuelve true
  40.    Text5.Text = Format$(Text5.Text, "True") ' false, on, off
  41.    
  42. End Sub
  43.  
  44.  

Hay más formatos predefinidos, sobretodo usando fechas... pero la idea creo que es ilustrativa...
«Ma non troppo»
----> ModoVacaciones = False<----

master33

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: text con numeros
« Respuesta #7 en: Miércoles 29 de Abril de 2009, 22:29 »
0
Gracias por la ayuda y la rapidez por respoder la que use fue la de Neribe

Código: Visual Basic
  1. Private Sub Text4_Validate(Cancel As Boolean)
  2.     Text4.MaxLength = 12
  3.     Text4.Text = Format$(Text4.Text, "0## #### ###")
  4.     Text4.MaxLength = 7
  5. End Sub
  6.  

 nada mas que decir gracias

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: text con numeros
« Respuesta #8 en: Miércoles 29 de Abril de 2009, 22:47 »
0
Cita de: "Nebire"
Si, hay que tener cuidado, piensa que cada '#' representa una cifra, entonces una cifra sólo reconoce números y los signos de puntuación de números. Si los signos de puntuación provocan desbordamiento dará error...
:think: OK

lo que es haber estudiado formalmente programación no como yo que a patadas tuve que aprender :P

Gracias por tu aporte Nebire  :good:
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: text con numeros
« Respuesta #9 en: Jueves 30 de Abril de 2009, 06:02 »
0
^_^  pues que mas se puede agregar,


 sino que... muy buena informacion  :good:

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

fraj

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: text con numeros
« Respuesta #10 en: Lunes 4 de Mayo de 2009, 20:08 »
0
mucha gracias ,por la ayuda  :D  :D  :D