Cargar datos en DataGrid desde otro formulario
Publicado por Marcos (2 intervenciones) el 05/10/2018 23:47:17
Buenas gente. Me encuentro realizando un proyecto de software para una mutualista en Visual Basic .net con base de datos en Mysql.
Estoy trabajando en capas (presentación, lógica y persistencia).
Tengo un formulario con un DataGridView donde cargo datos desde Mysql (Form 1).
Para modificar un dato, se le da doble click y se abrirá otro formulario (Form 2) al que se pasan los datos del datagrid (en textBox para poder modificarlos). Los datos se modifican correctamente, hasta ahí todo bien.
El problema es que no puedo actualizar el DataGridView luego de haber realizado la modificación, o sea, al momento de cerrarse el Form 2, el Form 1 debería volver a cargar los datos de la DB en el DataGrid.
Lo hice de esta forma:
No entiendo por qué no funciona de esta manera, tampoco se me ocurre otra forma de hacerlo.
Muchas gracias desde ya!
Estoy trabajando en capas (presentación, lógica y persistencia).
Tengo un formulario con un DataGridView donde cargo datos desde Mysql (Form 1).
Para modificar un dato, se le da doble click y se abrirá otro formulario (Form 2) al que se pasan los datos del datagrid (en textBox para poder modificarlos). Los datos se modifican correctamente, hasta ahí todo bien.
El problema es que no puedo actualizar el DataGridView luego de haber realizado la modificación, o sea, al momento de cerrarse el Form 2, el Form 1 debería volver a cargar los datos de la DB en el DataGrid.
Lo hice de esta forma:
Capa Persistencia:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Public Shared Sub ListarDeudores(ByRef dgvPagos As DataGridView)
Dim conexion As New Conexion()
Dim dt As New DataTable()
Using cmd As New MySqlCommand()
With cmd
.Connection = conexion.cnn
.CommandText = "Select u.ci as CI, u.nombre as Nombre, u.apellido1 as Apellido, u.apellido2 as
'Segundo apelido', pr.meses_atrasados as 'Meses que debe'" &
" from la_policlinica.paciente p" &
" left join la_policlinica.usuario u on p.ci_paciente = u.ci" &
" left join la_policlinica.particular pr on pr.ci_paciente = p.ci_paciente" &
" where pr.meses_atrasados > 0"
.CommandType = CommandType.Text
End With
Try
Using adaptador As New MySqlDataAdapter(cmd)
adaptador.Fill(dt)
End Using
dgvPagos.DataSource = dt
dgvPagos.RowTemplate.Height = 30
Catch ex As Exception
Console.WriteLine(ex.ToString())
conexion.Close()
End Try
conexion.Close()
End Using
End Sub
Capa Lógica:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Shared Sub ListarDeudores(ByRef dgvPagos As DataGridView)
Try
P_Pago.ListarDeudores(dgvPagos)
Catch ex As Exception
MsgBox(ex.Message)
MsgBox("Error al cargar" + ex.Message + MsgBoxStyle.Critical)
End Try
End Sub
Cargando datos desde el Form 1 Load:
1
2
3
4
5
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
L_Pago.ListarDeudores(Me.dgvPagos)
End Sub
Cargando datos desde el Form 2 Closed:
1
2
3
4
5
6
7
8
9
10
Private Sub Form2_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
Try
L_Pago.ListarDeudores(Form1.dgvPagos)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
No entiendo por qué no funciona de esta manera, tampoco se me ocurre otra forma de hacerlo.
Muchas gracias desde ya!
Valora esta pregunta


0