Visual Basic.NET - Dudas: DataGridView, Carpeta Bin

   
Vista:

Dudas: DataGridView, Carpeta Bin

Publicado por Sebastian (2 intervenciones) el 21/04/2010 14:02:41
Hola. Tengo una aplicación en la que utilizo un DataGridView para listar los datos de los clientes. Pulsando un botón puedo editar o añadir los registros en una nueva ventana con textbox (si es editando me recupera los datos del cliente sin problema). La duda viene cuando he aceptado los cambios en esa nueva ventana, necesito que el DataGridView se actualice mostrando los cambios realizados y no se como. Este es el código

*********botón editar***********
Private Sub ToolStripEditarCliente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripEditarCliente.Click
vIDCliente = CDbl(DataGridViewClientes.Item(0, DataGridViewClientes.CurrentRow.Index).Value)
vFormEditarClientes = "EDITAR"
FormEditarCliente.ShowDialog()
ListarDatos()
End Sub

*********procedimiento editar del form de edición de los datos***********
Try
Dim CommandoUpdateCliente As New Data.OleDb.OleDbCommand("UPDATE CLIENTES " & _
"SET IDCLIENTE = " & CDbl(TextClientes0.Text) & ", " & _
"DNICIF = '" & TextClientes1.Text & "', " & _
"NOMBRE = '" & TextClientes2.Text & "', " & _
"DIRECCION = '" & TextClientes3.Text & "', " & _
"POBLACION = '" & TextClientes4.Text & "', " & _
"PROVINCIA = '" & TextClientes5.Text & "', " & _
"CODIGOPOSTAL = '" & TextClientes6.Text & "', " & _
"TELEFONO = '" & TextClientes7.Text & "', " & _
"MOVIL = '" & TextClientes8.Text & "', " & _
"FAX = '" & TextClientes9.Text & "', " & _
"WEB = '" & TextClientes10.Text & "', " & _
"EMAIL = '" & TextClientes11.Text & "', " & _
"ADSG = '" & TextClientes12.Text & _
"' WHERE IDCLIENTE = " & CDbl(TextClientes0.Text), ConexionEditCliente)
CommandoUpdateCliente.ExecuteNonQuery()
Catch ex As Exception
'mostramos el error
MessageBox.Show("Ha ocurrido el siguiente error: " & _
Err.Number & ", " & Err.Description, " ERROR... ", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
'cerramos la conexion solo si esta abierta
If (ConexionEditCliente.State And ConnectionState.Open) <> 0 Then
ConexionEditCliente.Close()
End If
End Try

*********procedimiento listar datos***********
'Se cargan los datos de la base de datos
Dim comando As New Data.OleDb.OleDbCommand("Select * From CLIENTES Order By " & OrdenTabla, ConexionClientes)
DataSetClientes.Clear()
DataAdapterClientes.SelectCommand = comando
DataAdapterClientes.Fill(DataSetClientes, "CLIENTES")
DataViewClientes.Table = DataSetClientes.Tables("CLIENTES")
With DataGridViewClientes
.DataSource = DataViewClientes.Table
.Refresh()
End With

Después de esto el datagridview no se actualiza. No se si se debe a que vb.net crea una imagen de la base de datos (carpeta bin) donde se realizan los cambios o si por el contrario es problema del código.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Dudas: DataGridView, Carpeta Bin

Publicado por OliBeer (6 intervenciones) el 21/04/2010 17:34:51
Hola Sebastian, esto no tiene que ver con la BIN,

Lo que debes hacer es lo siguiente XD

En el botón de Editar, antes de esta línea:

FormEditarCliente.ShowDialog()

Debes asignarle el dueño a ese nuevo Form, para que tengas controlado el proceso, esto no es muy crítico, pero es una buena práctica que lo hagas.

Por ejemplo si tienes tres Forms: Ventas, Compras, Reporte. Y estas tres mandan a llamar a una que se llame Cliente, entonces, antes de regresar debes hacer un X proceso, pero éste varía según el Form que lo mandó llamar, para esto sirve OWNER, obtienes el nombre del Form que lo mandó a llamar, y continúas con el X proceso. A parte que en este ejemplo también nos va a servir... XD

entonces, antes de la línes mencionada haces agrega esto:

FormEditarCliente.Owner = Me
FormEditarCliente.ShowDialog()

Enseguida, lo que debes hacer es tu procedimiento de "Listar datos" debes declararlo como Public.

Entonces, en el botón de aceptar o no sé cómo se llame, el botón en el que haces el proceso de Editar de el Form FormEditarCliente, despues de hacer todo el proceso de Editar, y antes de cerrar ese Form, ejecuta en ese segundo Form un procedimiento de el primer Form, cómo? no se te olvide que el procedimiento ya lo declaraste Public, así que ya podemos acceder a él en este segundo Form, y con Owner, ya sabemos hacia dónde apuntar, así que, antes de cerrar:

CType(Owner, Form_Padre).Seleccionar_Datos() 'Este es tu procedimiento donde llenas el Grid.
Close()

de esta manera, antes de cerrar el segundo form, estás llenando el Grid del Primer Form, cuando se cierre el segundo, el primero estará actualizado.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dudas: DataGridView, Carpeta Bin

Publicado por Sebastián (2 intervenciones) el 22/04/2010 00:20:09
Hola, gracias por contestar, pero sigue igual. El datagridview no se actualiza después de aceptar los cambios.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dudas: DataGridView, Carpeta Bin

Publicado por OliBeer (6 intervenciones) el 22/04/2010 17:22:05
Hola,

Entonces, no lo estás haciendo correctamente, lee con atención lo que te digo, y trata de implementarlo.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar