La razón de ser

La vuelta a la Patria es un compromiso...la responsabilidad social...el aporte generoso...el modelo...la vida misma.

PARTE 01 Aprendiendo Visual Basic 2010 Express

31/01/2012

Mis primeros pasos en Visual Basic 2010 Express

La pequeña historia de siempre... en software me refiero

Después de muchos avatares y años logré trabajar a gusto con Visual Foxpro desarrollando sistemas administrativos y contables. Pero de golpe y porrazo hace pocos años Microsoft sacó de su inventario esta herramienta para imponer la tecnología NET y aquí estoy en la tranquilidad de la jubilación intentando aprender Visual Basic 2010 ayudado de mis conocimientos en desarrollo de sistemas y bases de datos relacionales, y además compartir mi experiencia (más no mis frustraciones) de aprendizaje con quienes quieran seguirme.

En mi primer problema de darle formato a la cadena ingresada a una caja de texto, me conseguí con algunos "expertos" para quienes mi problema de formato era algo superado y me mandaban a secciones de FAQs.  Concluí rápidamente que para quienes quieran aprender a programar con esta herramienta puede ser cuesta arriba, por lo que extiendo mi mano para ayudarlos, esperando me superen y compartan conmnigo y con otros. Sin embargo hay mucha gente, en foros, dispuesta a ayudar con sugerencias inmediatas por lo que es recomendable sea un miembro activo. Pero lo fundamental para aprender esta herramienta es su actitud.

Voy a desarrollar, por ahora, una serie de problemas que nos irán ayudando a implementar una calculadora tan compleja como quieran con todas sus rutinas de validación. No son problemas para ir a la luna, sino para ir aprendiendo y estoy seguro ustedes conseguirán una mejor manera, lo cual par mi de por si ya es un logro.

Material de apoyo

El libro de oro de Visual basic 
------------------------------------

Funciones de Visual Basic 2010

Foro Microsoft de Visual Basic 


Conducta de entrada:

Debe tener instalada en su máquina la herramienta Visual Basic 2010 Express



Ejercicio Nº 1

Pasar el contenido de la caja de texto a la etiqueta



Pasos:

1. Abrir nuevo proyecto de Aplicaación de Windows Form

2. Arrastrar al área de diseño:
        Un Button
        Un TextBox
        Un Label
       
3. Hacer doble click sobre el Button

4. Visualizar el código (si previamente no ha sido presentado) pulsando F7
     ó Ver/Código



5. Escribir el código faltante



    Public Class Form1

       Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
     System.EventArgs) Handles  Button1.Click

     ' Comentario: Usar _ (guión bajo) para continuar la sintaxis en 
     ' la siguiente línea

        Label1.Text = TextBox1.Text

     End Sub
 End Class

6. Ejecutar la depuración (Depurar/iniciar depuración ó pulsando F5 ó
   Click en el botón apuntado por  la flecha verde)


7. Tipear "Hola y SUERTE" y click en Button 1

!BINGO! si obtuvo este resultado...En hora buena



  
Recomendaciones:
Para modificaciones no olvide detener la depuración con Depuración/Detener
Depuración ó Click en el botón apuntado por la flecha roja en el gráfico de más arriba.

Ejercicio Nº2

Pasar el contenido de la caja de texto a la etiqueta. El contenido de la caja de texto debe contener únicamente un número entero -sin decimales- positivo.

Pasos:

1. Escribir la sintaxis




Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
    System.EventArgs) Handles Button1.Click

        Dim num1, product As Single

        num1 = TextBox1.Text

        product = num1

        Label1.Text = Format(product, "FIXED")  'Puede usar Format(num1,"FIXED")

    End Sub

    Private Sub TextBox1_KeyPress(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyPressEventArgs) _
    Handles TextBox1.KeyPress


        If InStr(1, "0123456789" & Chr(8), e.KeyChar) = 0 Then
            e.KeyChar = ""
        End If
    End Sub
End Class

Recomendaciones:

Revisar:
InStr()
e.KeyChar
e.Handled
Chr(8)

Trabajar con esta nueva rutina de validación


 
Ejercicio Nº 3

Pasar el contenido de la caja de texto a la etiqueta. El contenido de la caja de texto debe contener únicamente números  positivos o negativos con decimales. El separador de decimales debe ser el mismo que tiene configurado el computador (Ud no tiene por que saberlo), en la etiqueta 1 colocar el número con dos decimales,  en la etiqueta 2 colocar el separador de decimales y en la 3 el separador de miles.






 Pasos:

1. Escribir la sintaxis

 

 

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
    System.EventArgs) Handles Button1.Click

        Dim num1, product As Single

        num1 = TextBox1.Text

        product = num1

        Label1.Text = Format(product, "FIXED")

    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
    System.EventArgs) Handles MyBase.Load
        Dim s As String

        s = System.Globalization.CultureInfo.CurrentCulture.NumberFormat._
CurrencyDecimalSeparator
        Label2.Text = "El separador decimal es: '" & s & "'"

        s = System.Globalization.CultureInfo.CurrentCulture.NumberFormat._
CurrencyGroupSeparator
        Label3.Text = "El separador de miles es: '" & s & "'"

    End Sub

Private Sub TextBox1_KeyPress(ByVal sender As Object, _ 
                                  ByVal e As System.Windows.Forms._
KeyPressEventArgs) _
                                  Handles TextBox1.KeyPress
        Dim h As Integer, x As Integer
        Dim cadena As String, S As String

        S = System.Globalization.CultureInfo.CurrentCulture.NumberFormat._
CurrencyDecimalSeparator

        If InStr(1, "0123456789-" & Chr(8) & S, e.KeyChar) = 0 Then
            e.KeyChar = ""
        Else
            h = Len(TextBox1.Text) ' Longitud de cadena

            cadena = TextBox1.Text ' Almacena lo escrito en el textbox,
                                                  'sin incluir el último caracter

            For p = 1 To h
                If Mid(cadena, p, 1) = S Then ' Si ya hay UN SEPARADOR
                                                   'DECIMAL en la cadena...
                    If e.KeyChar = S Then
                        e.KeyChar = ""
                        Exit For
                    End If
                End If
            Next p

            For p = 1 To h
                If Mid(cadena, p, 1) = "-" Then ' Si ya hay un signo -  en la cadena...
                    If e.KeyChar = "-" Then
                        e.KeyChar = ""
                        Exit For
                    End If
                End If
            Next p

        End If
    End Sub

End Class


Ejercicio Nº 4

En la ejecución de programas, es fundamental reducir al mínimo la ocurrencia de errores. En el ejercicio hay por lo menos tres errores que es imprescindible corregir.

Se pide:

Buscar los errores





Solución:

1. Primer error: Cuando no se coloca ningún caracter en la caja de texto
2. Segundo error: Cuando se coloca únicamente el signo -
3. Tercer error: Cuando se coloca únicamente el separador de decimales (,)
    en mi caso


Ejercicio Nº 5


Corregir los errores del ejercicio 4

Solución a

Pasos:

1. Modificar la sintaxis como se muestra a continuación

 

Solución b

Pasos:

1. Modificar la sintaxis, con manejo de errores, como se muestra a continuación



Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
   System.EventArgs) Handles Button1.Click

        Dim num1, product As Single

        On Error GoTo corrector
            num1 = TextBox1.Text

            product = num1

            Label1.Text = Format(product, "FIXED")

        Exit Sub 'Para no ingresar cuando los datos son válidos

corrector:
        Label1.Text = "Dato no numérico"


    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
   System.EventArgs) Handles MyBase.Load
        Dim s As String

        s = System.Globalization.CultureInfo.CurrentCulture.NumberFormat._
CurrencyDecimalSeparator
        Label2.Text = "El separador decimal es: '" & s & "'"

        s = System.Globalization.CultureInfo.CurrentCulture.NumberFormat._
CurrencyGroupSeparator
        Label3.Text = "El separador de miles es: '" & s & "'"

    End Sub

    Private Sub TextBox1_KeyPress(ByVal sender As Object, _
                                      ByVal e As System.Windows.Forms._
KeyPressEventArgs) Handles TextBox1.KeyPress
        Dim h As Integer, x As Integer
        Dim cadena As String, S As String

        S = System.Globalization.CultureInfo.CurrentCulture.NumberFormat._
CurrencyDecimalSeparator

        If InStr(1, "0123456789-" & Chr(8) & S, e.KeyChar) = 0 Then
            e.KeyChar = ""
        Else
            h = Len(TextBox1.Text) ' Longitud de cadena

            cadena = TextBox1.Text ' Almacena lo escrito en el textbox,

                                                  ' sin incluir el último caracter

            For p = 1 To h
                If Mid(cadena, p, 1) = S Then ' Si ya hay UN SEPARADOR

                                                               'DECIMAL en la cadena...
                    If e.KeyChar = S Then
                        e.KeyChar = ""
                        Exit For
                    End If
                End If
            Next p

            For p = 1 To h
                If Mid(cadena, p, 1) = "-" Then ' Si ya hay un signo -  en la cadena...
                    If e.KeyChar = "-" Then
                        e.KeyChar = ""
                        Exit For
                    End If
                End If
            Next p

        End If
    End Sub

End Class

Muy bien. 

Hasta este punto hemos recorrido bastante camino. La validación de la data está controlada y en la siguiente parte vamos a desarrollar una sumadora de dos números que puede ser extendible a n sumandos de ser necesario.


Ir a la parte II

26 comentarios:

  1. Hola profesor, soy un entusiasta de la informática y tengo ganas de aprender Visual Basic, que tan complejo es este lenguaje?.

    Tengo conocimientos del inglés pero soy algo malo en matemáticas a ver si puedo aprender este lenguaje para desarrollar aplicaciones sencillas.

    ResponderEliminar
    Respuestas
    1. Hola Alberto

      En el fondo todo es práctica. Puedes hacer aplicaciones en cualquier ámbito, sin necesidad de utilizar matemáticas avanzadas y el inglés te va a ayudar. Comienza por hacer aplicaciones para alguna actividad diaria que realices, por ejemplo tiempo invertido en trasladarte o práctica de deporte y por ahí arrancas.

      Todo es práctica.

      Suerte y buen camino

      Bolívar

      Eliminar
  2. Gracias amigo por todo la buena predisposicion que le pones a tu sitio quiero aprender este hermoso lenguaje. Muchas Gracias se agradece que compartas amigo!! Mario

    ResponderEliminar
    Respuestas
    1. Hola Mario

      Gracias por tus palabras.

      Hace muchos años alguien me dio una mano para poder estudiar Ingeniería en Venezuela. Ahora vivo en Loja-Ecuador, ya jubilado, y debo devolver lo que la vida me dio. Igual espero hagas otro tanto con tus semejantes, si estas lecciones te ayudan, y si no también.

      Un abrazo y buen camino


      Eliminar
    2. Buenas Tardes Bolivar.. soy de Paraguay, ojala aca tambien exista una persona que piense como usted y que no sea egoista en sus conocimientos... La mayoria son egoistas en sus conocimientos.. Yo tb deseo aprender este lenguaje y estaria orgulloso de aprender con usted si me permite. Dios te ilumine siempre y bendiga tu familia..
      Un abrazo...

      Eliminar
    3. Hola Miguel

      Gracias por tus palabras. Primero decirte que me gusta mucha tu tierra, oigo música paraguaya, galoperas y más, y tuve muchos amigos en Venezuela, que cantaban en lengua nativa. Venezuela y Paraguay le ponen corazón al arpa.
      Respecto a esta herramienta, he desarrollado cinco módulos que estoy seguro te servirán. Arriba dejé el link del forum, donde gente desprendida te ayudará a perfeccionarte.

      Bastante gente de México ha aprendido, deducción por los reportes de mi blog. Ahora un orgullo que los paraguayos comiencen a seguirme.

      Para finalizar, conocimiento que se comparte es conocimiento, lo demás quizá sea currículo local sin trascendencia, nada que ver en este mundo global

      Un abrazo y buen camino

      Eliminar
  3. yo ahora es que empece a tratar la programacion y quiero sentrarme en eso .. como fue tu primera vez al ver un programa de programacion ¡¡ misael

    ResponderEliminar
  4. Hola Misael

    Fue terrible, por allá en 1972, tuve que enfrentarme a un monstruo del tamaño de una casa. y desde entonces siempre he ido al filo de la navaja, cuando dominaba una herramienta aparecía otra y así hasta el día de hoy con mis 65 años.

    Nunca desmayes y dale duro y comparte lo que sepas, es la única forma de avanzar.

    Te respondo tarde porque estuve por pagos argentinos trabajando socialmente (vivo en Loja - Ecuador).

    Abrazos Misael

    ResponderEliminar
  5. Alguien me podria ayudar tengo un form de compras tengo los textbox de la fecha, numero de factura de proveedor y COMBOBOX para q a las personas les aparezca en vez del nit del proveedor el sistema les muestre es el nombre. los parametros que le asigne donde dice datasource le coloque la tabla proveedor, displaymember le asigne nombreproveedor y en la opcion de value member le asigne nitproveedor, AL DARLE PLAY PARA EJECUTARLO cuando llego a la opcion de seleccion de combobox me aparecen los nombre de los proveedores pero cuando seleciono uno no me deja avanzar al otro textbox q es valor de la factura y se me bloquea el visual....que pena no se si me hice entender pero alguien q me comprenda y me pueda ayudar MUCHAS GRACIAS

    ResponderEliminar
  6. hola que tal,primero muchas gracias por tomarse el tiempo de realizar todo este material, pero me gustaría que las lineas de código fuesen mas explicadas, si es posible para entender el código he idear nuevas formas de hacer las cosas, pues mucho del codigo parece que hace las cosas por arte de magia y me frustra el no saber concretamente para que funciona cada cosa

    ResponderEliminar
    Respuestas
    1. Hola Carlo Andrés

      Gracias por el comentario.

      Te recomiendo este material http://www.vbtutor.net/vb2010/index.html y vas reforzando con el mío. Todo ayuda y ánimo

      Buen camino y suerte

      Bolívar


      Eliminar
    2. Genial, muchísimas gracias, estoy probando el material de la pagina que me recomendó y esta muy buena, con manejo de conceptos mas básicos que me ayudaran a seguir con su material, gracias nuevamente

      Eliminar
  7. Profesor no hay forma que ofrezca el material en Pdf Gracias..! Excelente Material

    ResponderEliminar
    Respuestas
    1. Hola Alejandro.

      Gracias por el buen concepto. Recuerda que puedes copiar y pegar y hacer tu propio manual, inclusive en PDF. Todo mi trabajo está bajo liciencia Creative Common lo que significa que puedes usarlos para lo que se te ocurra. No tienes que pedir mi permiso, basta que me des los cráditos a la parte utilizada. Por lo demás te deseo suerte y recuerda siempre habrá alguien en el mundo esperando tu ayuda.


      Buen camino.

      Eliminar
  8. Hola, Hace mucho, mucho tiempo yo aprendi Visual Basic 6.0, donde hacia aplicaciones con bases de datos de MSSQL server, Access y varios otros "Base de datos", el asunto es que hoy necesito reaprender Visual Basic, pero no encuentro la version 6.0, que tan diferente es de la version 2010, ayudame por favor. Gracias

    ResponderEliminar
    Respuestas
    1. Hola Nando.

      Mi fuerte era DBase, FoxPro y finalmente VisualFoxPro, y una vez que éste dejó de tener actualizaciones decidí aprender Visual Basic y he ahí el problema de cómo arrancar. Entonces decidí empezar de nuevo y lo hice con un manual de, justo, Visual 6.0.

      Con esto quiero decirle que un camino sería el de una, arrancar con tutoriales de la versión 2010 que lo van llevando de la mano y que para usted será fácil, ya que la parte gruesa y básica coincide con Visual 6.0.

      Muchos amigos han salido adelante con mis aportes y este tutorial http://www.vbtutor.net/vb2010/index.html.

      Todo saldrá bien y de una póngase en el camino del 2010 y gracias por la consulta

      Un abrazo y buen camino.

      Eliminar
  9. Hola profesor Bolivar.

    Es para hacer unas consultas pues tengo unos ejercicios que me han sacado de quisio y los tengo en reposo mientras veo una luz de ayuda estoy iniciando con Visual 2010 le agradezco si me puede colaborar con al menos uno de los siguientes ejercicios:

    1. Realizar un programa que pregunte el nombre y año de nacimiento y de cómo resultado:
    Hola nombre, en el año 2030 tendrá n años
    2. Escribir una clase Cfecha que permita crear objetos que encapsulen una fecha correcta. El dato año deberá ser igual o mayor a 2000. SE debe tener en cuenta que febrero puede tener 28 o 29 días si el ano es bisiesto.
    3. Realice un programa que lea una lista de valores introducidos por teclado. A continuación y por la lista tiene que buscar los valores máximos y mínimos y escribirlos.
    4. Utilizando el método NextDouble de la clase Random del espacio de nombres System, realizar un programa que muestre 6 números aleatorios diferentes entre 1 y 49 ordenados descendentemente

    Gracias mil y quedo atenta.

    ResponderEliminar
  10. Hola buen día. primero que nada le quiero agradecer por este maravilloso aporte como por compartir su conocimiento con todos, es un acto maravilloso de su parte, como tambien quiero saber si me puede guiar para diseñar un programa como este:

    https://www.youtube.com/watch?v=wU-D_jvr0og

    Gracias nuevamente.

    ResponderEliminar
  11. Soy Nuevo en programacion VB.net 2010 y se programar desde que exitio el fox, foxpro visual foxpro hay cosas que son distintas y comienzo adaptarme a ellas solo tengo una semana mas o menos en estos y gracias a dios estos aprendiendo aunque los primeros dias me pego dolor de cabeza porque me encontrado funciones y comandos distintos.

    Me gustaria tener acceso algunos de usted para que me puedan ayudar en algunas dudas que tenga mi nombre es Winfield Brooks (Honduras) mi correo es wgbrooks@gmail.com

    sera un placer contactarme con ustedes

    Buenas noches

    ResponderEliminar
  12. buenas noches , a todos
    yo vengo de programar tambien en todo lo que es fox y encontre esta pagina y realmente los felicito y que podamos compartir juntos tengo una semana de comenzar a estudiar VB.net
    y encontrado sumilitudes con fox pero en otros comando o propiedades son totalmente distintas
    y en algunos casos e tenido dolor de cabeza en no comprenderla pero se que no todo es facil
    cuando comenzamos,

    espero poder ponerme en conctato con todos ustedes porque que se algunos ya tienen tiempo en estos

    Es un placer saludarles

    ResponderEliminar
  13. hola, estoy tratando de recibir datos enviados desde un pic en vb mediante el puerto serial. he intentado pero no me queda, podrias ayudarme?

    ResponderEliminar
  14. Un saludo especial a todos los comentaristas. Le he puesto todo el cariño a este post y me agrada que les haya ayudado. Yo ando en otros trabajos con chicos de bachillerato ayudándolos y el tiempo se me achica, Les toca a ustedes ayudarse entre sí e irán avanzando.

    Dios me los cuide

    Buen camino

    ResponderEliminar
  15. Hola amigo un saludo estoy tratando de aprender visual estudio net, 2010 pero el problema es la mecanica del desarrrollo teorico del mismo no logro entenderlo, sobre el metodo de clases , y la programacion a objetos que tiene visual.net todo lo que he encontrado es dificil de digerir , lo entendia antes en visual 6 pero esto es algo que mejoraron pero algo rebuscado la logica. saludos desde venezuela
    Gabriel

    ResponderEliminar
    Respuestas
    1. Animo, Gabriel. En el post hay links de foros para que te ayudes.

      Eliminar
  16. buenas profe disculpe estaba mirando su blog y estaba buscando mas informacion de como empezar a programar con visual Basic y buscando y buscando me tope con su blog que lo veo interesante..pero hay un link que usted da y quise ingresar y no se puede. y quisiera saber si tiene algun otro sitio que me recomiende...relativo al de usted...ya que quiero aprender desde cero...el motivo es que es una materia en la universidad pero el docente nos enseña como si supieramos ya programar y directo a maquina el cual estoy cero ..en esoo..ni idea..y como veo el inicio de usted esta interesante ya que esta explicativo mas...espero su respuesta por si tubiera algun aporte que me ayude mi correo es el siguiente george_aisar@hotmail.com

    ResponderEliminar
    Respuestas
    1. Hola estimado

      Gracias por sus conceptos

      Ya eliminé el link inexistente

      Le recomiendo el subrayado que está operativo. Plántéese casos rutinarios, ejemplo listar las placas de los carros que ve pasar y luego ordenarlos por cualquier campo y hacer búsquedas. Yo aprendo de la calle y dale que dale. Mi blog justo lo hice para principiantes.

      Un abrazo y no desmaye, son miles de ejercicios. Llegará.

      BELF

      Eliminar

Escribir comentario, el más fácil es como anónimo