none
traer datos de un formulario a otro

    Pregunta

  • Buenas tardes, soy un novato en esto de programar y bases de datos, pero quisiera solicitarles un gran favor estoy realizando un programa en visual basic 2017que me está generando un error y no he encontrado como resolverlo, el cual es el siguiente: tengo un form1 donde se piden datos personales de Usuarios, entre estos hay dos controles  que son combobox donde en uno se escoge el género de la persona (femenino o masculino) y el otro combobox es el nivel de entrenamiento de la misma (sedentario o deportista). También tengo un textbox donde se ingresa el peso corporal de la persona. una ves ejecutada la aplicación debo enviar los valores de estos 3 controles a un segundo formulario (form2) para realizar cálculos y enviar los resultados a los respectivos textbox que están en un tercer formulario (form3). El error que se genera es que aparece subrayados en rojo los dos commbobox y el textbox del peso en el form2 cuando se escribe el código para realizar los cálculos con el mensaje que no se han declarado, lógicamente porque no están en el formulario 2 sino en el formulario 1. He visto  en tutoriales el código para enviar datos de un formulario a otro es el nombre del formulario.nombre del control y su propiedad donde se va a consignar el dato, pero no me funciona y genera el error de subrayado en rojo, ya no el nombre del control, sino el nombre del formulario donde está el control a donde se va a mostrar el resultado en el formulario 3. Espero haber sido lo más claro posible pero soy nuevo en esto. mil gracias si me pueden colaborar.

    Yurisan48

    jueves, 12 de julio de 2018 15:23

Respuestas

  • Hola Yurisan84,

    Para pasar datos entre formularios yo uso constructores.

    Por ejemplo:

        En el Form Destino:

        Dim idUsuario As String
        Dim idProducto As String   

        Public Sub New()
            InitializeComponent()
        End Sub

        Public Sub New(codigo As String)
            Me.New()
            Me.idProducto = codigo
        End Sub

        Public Sub New(usuario As String, producto As String)
            Me.New()
            idUsuario = usuario
            idProducto = producto
        End Sub

         En el Form que envía:

          Dim frm As New FormDestino()
          frm.ShowDialog()

          Dim frm As New FormDestino(idUsuario)
          frm.ShowDialog()

          Dim frm As New FormDestino(idUsuario, idProducto)
          frm.ShowDialog()

          Según sea el caso.
          Espero haberte podido ayudar, saludos.

    jueves, 12 de julio de 2018 16:45

Todas las respuestas

  • [...] He visto  en tutoriales el código para enviar datos de un formulario a otro es el nombre del formulario.nombre del control [...]

    Ojo con esto: Donde dice "nombre del formulario", lo que hay que poner no es el nombre de la clase del formulario, sino el nombre de la instancia del formulario.

    Por ejemplo, si instancias el formulario asi:

    Dim frm as New Form2() : frm.Show()

    entonces el nombre que hay que usar es "frm", NO es "Form2". Por ejemplo, asi llamarias a un textBox:

    frm.TextBox1.Text = ....

    Como es logico, para poder hacer eso es necesario que la variable "frm" sea visible desde el sitio en el que vas a llamarla. Si era una variable local de una subrutina en donde abriste el Form2, tendras que sacarla de esa subrutina (o copiar su valor) y hacersela llegar al sitio desde el que quieres usarla.

    Ah, y me imagino que es obvio, pero por si acaso: recuerda que en las propiedades de ese control hay que ponerle el modificador "Public".

    jueves, 12 de julio de 2018 16:03
  • Hola Yurisan84,

    Para pasar datos entre formularios yo uso constructores.

    Por ejemplo:

        En el Form Destino:

        Dim idUsuario As String
        Dim idProducto As String   

        Public Sub New()
            InitializeComponent()
        End Sub

        Public Sub New(codigo As String)
            Me.New()
            Me.idProducto = codigo
        End Sub

        Public Sub New(usuario As String, producto As String)
            Me.New()
            idUsuario = usuario
            idProducto = producto
        End Sub

         En el Form que envía:

          Dim frm As New FormDestino()
          frm.ShowDialog()

          Dim frm As New FormDestino(idUsuario)
          frm.ShowDialog()

          Dim frm As New FormDestino(idUsuario, idProducto)
          frm.ShowDialog()

          Según sea el caso.
          Espero haberte podido ayudar, saludos.

    jueves, 12 de julio de 2018 16:45
  • Gracias por la respuesta , lo voy a intentar asi.
    jueves, 12 de julio de 2018 19:01