¿Cómo llamar a un un procedimiento de un formulario desde otro form en vb.net 2008?

Tengo un formulario llamado fPedidos, que contiene un botón que llama a otro formulario llamado fBuscaPedido mediante el siguiente código:

Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click
Dim fbuscapedido As New fbuscaPedido
fbuscapedido.Show()
End Sub

en el formulario fbuscapedido, realizo una consulta sql y luego llamo a un procedimiento que está en el primer formulario (fpedidos), así:

 Private Sub btnAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAceptar.Click
 Dim p As Integer = CInt(Me.dgPedidos.Item(Me.dgPedidos.CurrentRowIndex, 0))
 fPedidos.buscapedido(p)
 Me.Close()
 End Sub

Hasta aquí todo perfecto. Mi problema resulta cuando, intento crear otro formulario llamado fMenu, el cual deberá ser el objeto de inicio de la aplicación, el formulario fmenu, llama al formulario fpedidos así:

 Private Sub btnPedidos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPedidos.Click
 Dim fpedidos As New fPedidos
 fpedidos.Show()
 End Sub

Y es aquí donde tengo el problema, cuando solo tengo mi formulario fpedidos y fbuscapedidos, (es decir el formulario fpedidos es el objeto de inicio), todo funciona, pero cuando cambio mi objeto de inicio al formulario fmenu, ya no me funciona el llamado al procedimiento buscapedido.

Creo que es una cosa sencilla la que estoy haciendo mal, pero solo tengo 1 mes de experiencia y no se cuál sea mi error.

1 respuesta

Respuesta
1

No entiendo bien tu problema, el penúltimo parráfo es confuso.

Me puedes explicar con un poco más de paciencia el problema.

Gracias por la pronta respuesta,

En forma de esquema:

1) Formulario fpedidos (es el formulario principal)

contiene un procedimiento llamado buscapedido

el formulario fpedidos llama al formulario fbuscapedido

el usuario escoge un dato

el formulario fbuscapedido llama al procedimiento buscapedido (en fpedidos)

el formulario fbuscapedido se cierra

el formulario fpedido muestra el dato seleccionado por el usuario

=============================

2) formulario fmenu (es el formulario principal)

el formulario fmenu llama al formulario fpedidos

Formulario fpedidos contiene un procedimiento llamado buscapedido
el formulario fpedidos llama al formulario fbuscapedido
el usuario escoge un dato
el formulario fbuscapedido llama al procedimiento buscapedido (en fpedidos)
el formulario fbuscapedido se cierra
(aquí el problema) el formulario fpedido NO muestra el dato seleccionado por el usuario

el esquema 1 funciona perfectamente, el esquema 2, no me muestra los datos.

Entiendo que el problema viene cuando cierras el formulario fbuscapedido cierto, que le pasa los datos a fpedido.

Guiame para entender tu caso para ayudarte.

exacto, ese es el problema, los datos simplemente no aparecen en el formulario fpedidos. Lo que me llama la atención, es que cuando el formulario fpedidos es el formulario principal, o sea cuando NO lo abro desde fmenu, los datos si aparecen.

¿Usas MdiParent para abrir los formularios?

estoy trabajando con compact framework 3.5, es decir desarrollando una aplicación para palm, y en las propiedades del formulario no aparece la opción para formularios padre o hijos.

perdón si no lo había aclarado antes.

Ponme el código que tiene esta función o sub rutina

FPedidos. Buscapedido(p)

aquí está:

 Sub buscapedido(ByVal pedido As Integer)
 Try
 sql = "Select idpedido, idcliente, clienten, total from tbpedidos where idpedido = '" & pedido & "'"
 data.conectar()
 dtr = data.buscar(sql)
 If dtr.Read = True Then
 Me.txtPedido.Text = CStr(dtr.Item(0))
 Me.txtCodCliente.Text = CStr(dtr.Item(1))
 Me.txtCliente.Text = CStr(dtr.Item(2))
 Me.lblTotal.Text = CStr(dtr.Item(3))
 Me.txtCodCliente.ReadOnly = True
 Me.txtCodigo.ReadOnly = True
 Me.txtCantidad.ReadOnly = True
 Me.txtCantidad.Text = ""
 Me.btnAgregar.Enabled = False
 Me.btnQuitar.Enabled = False
 Me.btnhlpCliente.Enabled = False
 Me.btnhlpProduc.Enabled = False
 Me.btnGrabar.Enabled = False
 Me.buscadetalle(pedido)
 data.desconectar()
 End If
 Catch ex As Exception
 MsgBox(ex.Message)
 End Try
 End Sub

Está complicado pasar el dato entre formularios, por lo que vamos a hacer es lo siguiente.

Cambia del código del Botón Aceptar siguiente:

 Private Sub btnAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAceptar.Click
 Dim p As Integer = CInt(Me.dgPedidos.Item(Me.dgPedidos.CurrentRowIndex, 0))
 fPedidos.buscapedido(p)
 Me.Close()
 End Sub

Por este:

 Private Sub btnAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAceptar.Click
 Dim p As Integer = CInt(Me.dgPedidos.Item(Me.dgPedidos.CurrentRowIndex, 0))
FPedidos. Buscapedido(p)
Me. Hide()
 End Sub

Lo que hacemos es en vez de cerrar, esconder.

Me dices como fue.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas