none
Formulario de busqueda

    Pregunta

  • Cordial saludo

    El problema es el siguiente desde un formulario (Form1) hago una búsqueda y el resultado me lo da en un nuevo formulario (Form2), la busqueda la hace bien, pero cuando voy a devolver la seleccion de la busqueda  al Form1 no la realiza.

    el codigo es el siguiente:

    en el Form1

    Public MyForm As New frmForm2

    Public Sub mostar()

            Try
                Dim func As New DPropietarios
                DT = func.Mostrar

                If DT.Rows.Count <> 0 Then
                    MyForm.DataListado.DataSource = DT
                    MyForm.DataListado.ColumnHeadersVisible = True
                    MyForm.Inexistente.Visible = False

                Else
                    MyForm.DataListado.DataSource = Nothing
                    MyForm.DataListado.ColumnHeadersVisible = False
                    MyForm.Inexistente.Visible = True
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

            MyForm.Inexistente.Visible = False
            Buscar()

        End Sub

             

     Public Sub Buscar()
            Try
                Dim DS As New DataSet
                DS.Tables.Add(DT.Copy)
                Dim dv As New DataView(DS.Tables(0))

                dv.RowFilter = Cb_Campo.Text & " like '" & txt_Buscar.Text & "%'"

                If dv.Count <> 0 Then

                    MyForm.Inexistente.Visible = False
                    MyForm.DataListado.DataSource = dv


                Else
                    MyForm.Inexistente.Visible = True
                    MyForm.DataListado.DataSource = Nothing

                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

        End Sub   

    Public Sub btn_Buscar_Click(sender As Object, e As EventArgs) Handles btn_Buscar.Click
            MyForm.Show()
            mostar()
        End Sub

    Ahora en el Form2

    ahora en este form realizo la seleccion pero solo me la guarda si es en el mismo formulario y si la quiero enviar al form1 no me envia dada.

    porque sucede eso?


    JorgeLeonardoDC

    martes, 6 de septiembre de 2016 15:44

Respuestas

  • Hola JorgeLeonardoDC,

    [-] ... Lo intente pero el form2 no me devuelve la información al Form1

    Pero si no pones el código que estás usando como vamos a saber cuál es tu problema ?

    Si el Form2 lo abres como un diálogo (ShowDialog()) puedes hacer esto :

    *Form1 :

       Private Sub btnBuscar_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Using frm2 As New Form2
                If frm2.ShowDialog = DialogResult.OK Then
                    TextBox1.Text = frm2.valor
                End If
            End Using
        End Sub

    * Form2 :

        Public Property valor As String
    
        Private Sub DataGridView1_CellDoubleClick(sender As Object....
            valor = DataGridView1.CurrentRow.Cells(0).Value.ToString
            Me.DialogResult = DialogResult.OK
        End Sub

    Dónde por medio del evento CellDoubleClick asigno el valor de la columna 1 (posición 0) de la fila seleccionada a la variable y luego establezco el resultado del diálogo como Ok para confirmar.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    jueves, 8 de septiembre de 2016 17:45
  • Sí, tienes razón, el MyForm solo lo instancias una vez. El problema es que el código que has mostrado está un poco liado, no se ve bien cuál es el Form1 y el 2 y dónde instancias y muestras cada uno de los dos y cuándo haces el paso de datos. Aunque eso es difícil para los usuarios del foro que vemos solo parte del código, en cambio no debería ser difícil para ti, teniendo todo el código en Visual Studio y pudiendo ejecutarlo paso a paso con el debugger. Sigue la ejecución linea a linea, y fíjate en dónde pasas los datos y donde dices que "no envía nada" cerciórate de los valores que estás asignando y examina la instancia a la que se los asignas, a ver si efectivamente coincide con la que creías que estaba abierta.

    jueves, 8 de septiembre de 2016 18:45

Todas las respuestas

  • ¿Te refieres a la subrutina mostrar? ¿Donde dice Dim func As New DPropietarios : DT = func.Mostrar ?

    Si es así, el problema es que estás creando un NUEVO DPropietarios, que nunca se llega a ver en la pantalla porque no le haces func.Show(). Los resultados se los mandas a ese formulario oculto, no al DPropietarios anterior que ya tenías abierto.

    Para mandárselos al formulario anterior, necesitas preservar su referencia. Es decir, en algún sitio hiciste "Dim algo=New DPropietarios : algo.Show()" cuando mostraste el formulario inicial. Esa variable "algo" tienes que hacérsela llegar a la función "mostrar" y usarla en lugar de "func".

    jueves, 8 de septiembre de 2016 6:42
  • Pues la variable que utilizo para llamar el Form es MyForm, pero la verdad no entiendo bien las correcciones.

    JorgeLeonardoDC

    jueves, 8 de septiembre de 2016 16:16
  • el caso es el  siguiente:

    Desde un Form 1 realizaria la búsqueda por medio de un ComboBox el cual me seleccionara la columna a buscar en la base de datos, y un TextBox el cual dará el dato a buscar.

    con esto me filtrara la información la cual me la daría en un Form2 (supongo), en este Form2 seleccionaria el dato que deseo, y con el devolvería información al Form1.

    NOTA: Lo intente pero el form2 no me devuelve la información al Form1


    JorgeLeonardoDC

    jueves, 8 de septiembre de 2016 17:17
  • Hola JorgeLeonardoDC,

    [-] ... Lo intente pero el form2 no me devuelve la información al Form1

    Pero si no pones el código que estás usando como vamos a saber cuál es tu problema ?

    Si el Form2 lo abres como un diálogo (ShowDialog()) puedes hacer esto :

    *Form1 :

       Private Sub btnBuscar_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Using frm2 As New Form2
                If frm2.ShowDialog = DialogResult.OK Then
                    TextBox1.Text = frm2.valor
                End If
            End Using
        End Sub

    * Form2 :

        Public Property valor As String
    
        Private Sub DataGridView1_CellDoubleClick(sender As Object....
            valor = DataGridView1.CurrentRow.Cells(0).Value.ToString
            Me.DialogResult = DialogResult.OK
        End Sub

    Dónde por medio del evento CellDoubleClick asigno el valor de la columna 1 (posición 0) de la fila seleccionada a la variable y luego establezco el resultado del diálogo como Ok para confirmar.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    jueves, 8 de septiembre de 2016 17:45
  • Sí, tienes razón, el MyForm solo lo instancias una vez. El problema es que el código que has mostrado está un poco liado, no se ve bien cuál es el Form1 y el 2 y dónde instancias y muestras cada uno de los dos y cuándo haces el paso de datos. Aunque eso es difícil para los usuarios del foro que vemos solo parte del código, en cambio no debería ser difícil para ti, teniendo todo el código en Visual Studio y pudiendo ejecutarlo paso a paso con el debugger. Sigue la ejecución linea a linea, y fíjate en dónde pasas los datos y donde dices que "no envía nada" cerciórate de los valores que estás asignando y examina la instancia a la que se los asignas, a ver si efectivamente coincide con la que creías que estaba abierta.

    jueves, 8 de septiembre de 2016 18:45