none
¿Como ligar datos de un formulario al abrir un segundo? RRS feed

  • Pregunta

  • Hola, tengo dos formularios de inicio uno con dos txtbox (ser, password) y un boton para entrar  y el otro solo con un combo (user)y un boton para entrar y ya busque información pero no se como lograr que al dar click en los botones mencionados me abra el segundo formulario con los datos ligados al usuario que tengo en los txtbox del primer formulario o bien ligados al dato del combo del otro. 

    Por ejemplo si entro con el usuario de juan perez que me abra los registros que le pertenecen a juan perez.

    Ojala alguien me pueda orientar ya que en acces lo pude hacer pero en vb voy empezando y no se como puedo lograr eso.

    Saludos..



    Javi Rojas.

    viernes, 16 de marzo de 2018 22:32

Respuestas

  • Lo tengo asi:

    Al dar click en el boton de entrar:

            Select Usuario.Text
                Case "jperez"
                    Dim sqlConnection2 As New System.Data.SqlClient.SqlConnection("Server="Miserver";Database= DB;integrated security = true")
                    Dim cmd1 As New System.Data.SqlClient.SqlCommand
                    cmd1.CommandType = System.Data.CommandType.Text
                    cmd1.CommandText = "SELECT * FROM USUARIOS WHERE Usuario = '" & Me.Usuario.Text & "'"
                    cmd1.Connection = sqlConnection2
                    sqlConnection2.Open()
                    cmd1.ExecuteNonQuery()
                    sqlConnection2.Close()
                    CAPTURA.Show()
                    MsgBox("Bienvenido jperez")

    End Select

    End Sub

    Pero al entrar al segundo formulario veo todos los registros de todos los usuarios, en un combo tengo todos los procesos de esta forma:

     Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CbIndicador.SelectedIndexChanged
            Dim con As New SqlConnection
            con = New SqlConnection("Server=Server;Database=DB; integrated security = true")
            con.Open()
            Dim consulta As String = "SELECT * FROM TABLA WHERE Proceso=  '" + Me.Proceso.SelectedValue + "'"
            Dim com As New SqlCommand
            com = New SqlCommand(consulta, con)
            com.CommandType = CommandType.Text
            com.Connection = con
            Dim resp As SqlDataReader = com.ExecuteReader()
            While (resp.Read())
                Tb1.Text = Convert.ToString(resp.GetString(1))
                Tb2.Text = Convert.ToString(resp.GetString(3))
                Tb3.Text = Convert.ToString(resp(5))
                Tb4.Text = Convert.ToString(resp(8))
                Tb5.Text = Convert.ToString(resp(6))
                Tb6.Text = Convert.ToString(resp(7))
                Tb7.Text = Convert.ToString(resp(9))
                Tb8Text = Convert.ToString(resp(10))
                Tb9.Text = Convert.ToString(resp(11))
                Tb10.Text = Convert.ToString(resp(12))
            End While
        End Sub

    Entonces, asi como lo tengo no me limita a solo ver los indicadores del usuario con el que ingreso en el formulario de acceso que es lo que busco, en este caso quisiera que me traiga solamente los registros ligados al usuario jperez


    Javi Rojas.

    miércoles, 21 de marzo de 2018 17:46

Todas las respuestas

  • Hola Javi:

    Puedes hacerlo de este modo.

    En la clase de tu segundo formulario, defines un constructuctor con 2 parametros,

    Cuando has validado al usuario en el primer formulario, al llamar al segundo, alimentas el constructor llenando estos parametros. y en ese metodo del 2º Formulario ya cargas lo que te parezca.

     Dim form As New frmDetalle(nombre,clave)
            form.Show()

    Un saludo

    sábado, 17 de marzo de 2018 7:18
  • y en el segundo formulario (frmDetalle) tiene que poner:

    Dim sNombre as string = ""

    Dim sClave as string =""

    public sub new(byval _nombre as string, byval _clave as string)

        sNombre = _nombre

       sClave = _clave

    end sub

    de esta manera recoges los valores del primer formulario y lo pasas al segundo.



    • Editado rbs61 sábado, 17 de marzo de 2018 8:46
    • Propuesto como respuesta Pablo RubioModerator domingo, 18 de marzo de 2018 15:39
    sábado, 17 de marzo de 2018 8:43
  • Lo tengo asi:

    Al dar click en el boton de entrar:

            Select Usuario.Text
                Case "jperez"
                    Dim sqlConnection2 As New System.Data.SqlClient.SqlConnection("Server="Miserver";Database= DB;integrated security = true")
                    Dim cmd1 As New System.Data.SqlClient.SqlCommand
                    cmd1.CommandType = System.Data.CommandType.Text
                    cmd1.CommandText = "SELECT * FROM USUARIOS WHERE Usuario = '" & Me.Usuario.Text & "'"
                    cmd1.Connection = sqlConnection2
                    sqlConnection2.Open()
                    cmd1.ExecuteNonQuery()
                    sqlConnection2.Close()
                    CAPTURA.Show()
                    MsgBox("Bienvenido jperez")

    End Select

    End Sub

    Pero al entrar al segundo formulario veo todos los registros de todos los usuarios, en un combo tengo todos los procesos de esta forma:

     Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CbIndicador.SelectedIndexChanged
            Dim con As New SqlConnection
            con = New SqlConnection("Server=Server;Database=DB; integrated security = true")
            con.Open()
            Dim consulta As String = "SELECT * FROM TABLA WHERE Proceso=  '" + Me.Proceso.SelectedValue + "'"
            Dim com As New SqlCommand
            com = New SqlCommand(consulta, con)
            com.CommandType = CommandType.Text
            com.Connection = con
            Dim resp As SqlDataReader = com.ExecuteReader()
            While (resp.Read())
                Tb1.Text = Convert.ToString(resp.GetString(1))
                Tb2.Text = Convert.ToString(resp.GetString(3))
                Tb3.Text = Convert.ToString(resp(5))
                Tb4.Text = Convert.ToString(resp(8))
                Tb5.Text = Convert.ToString(resp(6))
                Tb6.Text = Convert.ToString(resp(7))
                Tb7.Text = Convert.ToString(resp(9))
                Tb8Text = Convert.ToString(resp(10))
                Tb9.Text = Convert.ToString(resp(11))
                Tb10.Text = Convert.ToString(resp(12))
            End While
        End Sub

    Entonces, asi como lo tengo no me limita a solo ver los indicadores del usuario con el que ingreso en el formulario de acceso que es lo que busco, en este caso quisiera que me traiga solamente los registros ligados al usuario jperez


    Javi Rojas.

    miércoles, 21 de marzo de 2018 17:46
  • Hola:

    Pero en la select que tienes para ese combo, y dado que ya dispones del usuario tienes que igualar el campo =no se como se llama al atributo de esa clase sNombre.

    Dim consulta As String = "SELECT * FROM TABLA WHERE Proceso=  '" + Me.Proceso.SelectedValue + "' and TU CAMPO DE LA BBDD = '"+ como hayas llamado a tu sNombre'"

    Un saludo

    miércoles, 21 de marzo de 2018 19:07
  • Asi entro en el form de login o acceso

    Esa es la pantalla del segundo form, si doy click en el combo me muestra los procesos en su totalidad, no los limita por usuario.

    Cambie la consulta asi, pero no logro el resultado que quiero.

     Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CbIndicador.SelectedIndexChanged
            Dim con As New SqlConnection
            con = New SqlConnection("Server=Server;Database=DB; integrated security = true")
            con.Open()
            Dim consulta As String = "SELECT * FROM TABLA WHERE Proceso=  '" + Me.Proceso.SelectedValue + "' AND Usuario = '" + Me.TbUser.Text + "'"
            Dim com As New SqlCommand
            com = New SqlCommand(consulta, con)
            com.CommandType = CommandType.Text
            com.Connection = con
            Dim resp As SqlDataReader = com.ExecuteReader()
            While (resp.Read())
                Tb1.Text = Convert.ToString(resp.GetString(1))
                Tb2.Text = Convert.ToString(resp.GetString(3))
                Tb3.Text = Convert.ToString(resp(5))
                Tb4.Text = Convert.ToString(resp(8))
                Tb5.Text = Convert.ToString(resp(6))
                Tb6.Text = Convert.ToString(resp(7))
                Tb7.Text = Convert.ToString(resp(9))
                Tb8Text = Convert.ToString(resp(10))
                Tb9.Text = Convert.ToString(resp(11))
                Tb10.Text = Convert.ToString(resp(12))
            End While
        End Sub


    Javi Rojas.

    miércoles, 21 de marzo de 2018 19:46
  • Hola Javi:

    Pero en la segunda pantalla ya no tenías tbUser, si mal no recuerdo, que la consulta era porque le pasabas el valor del tbUser del primer form al segundo.

    Entonces la consulta no tiene que ser and usuario = tbUser, sino a tu variable de formulario, que has asignado en la carga del formulario segundo. sNombre.

    Si dispones de otro textBox Usuario también en el segundo formulario, entonces a la carga del segundo formulario, le puedes asignar el valor del parametro recibido, y a posteriori de esta asignacion es cuando tienes que ejecutar la consulta.

    Espero habertelo explicado claro.

    Un saludo

    miércoles, 21 de marzo de 2018 20:15
  • Lo que no me queda claro es el tema de los parametros, pero esa parte que me explicas si la entendi.

    Gracias..

    si tienes algun correo podrias apoyarme por favor ya que soy nuevo en estos temas y aun hay cosas que no entiendo completamente.


    Javi Rojas.


    • Editado Javi Rojas miércoles, 21 de marzo de 2018 21:16
    miércoles, 21 de marzo de 2018 21:15
  • Hola Javi.

    Hace unos cuantos años que no toco Visual Basic.

    Tu pregunta sin miedo en el foro, que hay mucha gente que te echará un cable.

    Aunque para VB, lo mejor es este: Hay gente muy pero que muy buena. No te asustes, porque no te dejan en la estacada. Si te mandan hacer algo y no lo entiendes, responde, que te ayudarán mogollón.

    https://social.msdn.microsoft.com/Forums/es-ES/home?forum=vcses%2Cvbes&filter=alltypes&sort=lastpostdesc

    Según se te vayan ocurriendo las dudas, si estoy disponible, te echo un cable, sobre todo con conceptos, de como se pueden hacer y como no debieras, mas que con sintaxis.

    Saludos

    www.webmaster@filebix.com

    miércoles, 21 de marzo de 2018 21:35
  • Me parece bien, gracias por la ayuda.

    Saludos..


    Javi Rojas.

    miércoles, 21 de marzo de 2018 21:50