Visual Basic.NET - Eliminar fila de bd usando un datagrid

 
Vista:

Eliminar fila de bd usando un datagrid

Publicado por David (116 intervenciones) el 30/05/2004 13:19:45
Hola!! Estoy usando un datagrid para eliminar una fila en la bd, pero solo consigo q se elimine del datagrid sin que la bd se modifique. Alguien sabe que hago mal?? Gracias y un saludo!!
Dim AdapterEliminar As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM CLIENTES", conn)
Dim DataSetEliminar As DataSet = New DataSet
AdapterEliminar.Fill(DataSetEliminar, "Clientes")
Dim Tabla As DataTable = DataSetEliminar.Tables("Clientes")
Dim cm As CurrencyManager = CType(Me.BindingContext(DGClientes.DataSource, DGClientes.DataMember), CurrencyManager)
Dim dv As DataView = CType(cm.List, DataView)
Dim dr As DataRow
If cm.Position <> -1 Then
dr = dv.Item(cm.Position).Row
Dim Fila As DataRow
For Each Fila In Tabla.Rows
If Fila("IdCliente") = dr("IdCliente") Then
Tabla.Rows.Remove(Fila)
dv.Delete(cm.Position)
Exit For
End If
Next
Else
MessageBox.Show("No quedan clientes")
End If
Dim comandos As SqlCommandBuilder = New SqlCommandBuilder(AdapterEliminar)
AdapterEliminar.Update(DataSetEliminar, "Clientes")
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:Eliminar fila de bd usando un datagrid

Publicado por Edgar (1501 intervenciones) el 31/05/2004 16:02:55
Hola

Lo que sucede es que debes colocar el comando para eliminar, es decir, debes crear un nuevo comando que contenga la sentecia DELETE, luego se lo asignas a la propiedad DeleteCommand del Adaptador y luego, al hacer el Update, los registros se eliminarán de la BD

Lo que sucede es que cuando haces update, el DataAdapter puede hacer tres cosas: crear registros, actualizarlos o eliminarlos, en esots casos, el adaptador hace uso de los comandos correspondientes según sea el caso, lo cuales debes haber asignado previamente

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:Eliminar fila de bd usando un datagrid

Publicado por David (116 intervenciones) el 31/05/2004 17:37:57
Hola!! No te entiendo muy bien. Paso del codigo anterior y simplemente detecto el id seleccionado en el grid y le aplico un command y un nuevo adaptador?? Mas o menos asi
Dim AdapterEliminar As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM CLIENTES", conn)
Dim DataSetEliminar As DataSet = New DataSet
AdapterEliminar.Fill(DataSetEliminar, "Clientes")
Dim id As Integer // imagina que aqui tengo el identificador
Dim cms As SqlCommand = New SqlCommand("DELETE FROM Clientes WHERE IdCliente = '" & id & "'", conn)
AdapterEliminar.DeleteCommand = cms
AdapterEliminar.Update(DataSetEliminar, "Clientes")

Gracias
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:Eliminar fila de bd usando un datagrid

Publicado por Edgar (1501 intervenciones) el 31/05/2004 18:48:33
Hola

Lo que te recomiendo es crear el adaptador a través del ayudante que este ibjeto te provee. Te resultará sumamente sencillo crear los comandos para insertar, eliminar y modificar los registros, esto te lo digo porque es un poco complicado crear estos comandos de tal manera que puedan ser usados por el Adaptador

En este caso no hace falta que detectes cual es el registro que estas eliminando, el adaptador sabe cuales fueron insertados, modificados y eliminados, el problema que tiene es que no sabe que hacer con ellso porque no has asignado los comandos necesarios para que pueda hacer algo...

Entonces.. de verdad, agrega un dataadapter sobre tu formulario o sobre el componente que estás creando y usa el ayudante, verás que lo configuras rápido y podrás actualizar tu BD sin problemas

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:Eliminar fila de bd usando un datagrid

Publicado por David (116 intervenciones) el 31/05/2004 19:27:23
Hola Edgar, perdona que sea pesado pero solo consigo eliminar la fila del datagrid. Cree en el load un sqldataadapter con el asistente usando la tabla clientes, luego genere el conjunto de datos tb con asistente y creo q lo hizo todo bien. Ahora en el boton eliminar pongo este codigo:
conn.Open()
Dim tabla As DataTable = DataSet11.Tables("Clientes")
Dim fila As DataRow
Dim cm As CurrencyManager = CType(Me.BindingContext(DGClientes.DataSource, DGClientes.DataMember), CurrencyManager)
Dim dv As DataView = CType(cm.List, DataView)
Dim dr As DataRow
If cm.Position <> -1 Then
dr = dv.Item(cm.Position).Row
dv.Delete(cm.Position)
Else
MessageBox.Show("No quedan albaranes seleccionados")
End If
For Each fila In tabla.Rows
If (fila.Item(0) = dr.Item(0)) Then
fila.Delete()
End If
Next
SqlDataAdapter1.Update(DataSet11, "Clientes")
conn.Close()

Y no me elimina de la bd. Sabes xq puede ser??
Muchas gracias por todo.
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:Eliminar fila de bd usando un datagrid

Publicado por Edgar (1501 intervenciones) el 31/05/2004 20:36:44
Intenta hacer esto:

En vez de hacer un ciclo puedes hacer directamente esto: tabla.Rows.Remove(dr.Item(0))

Si esto no funciona se debe a que la fila que estas obteniendo proviene de un DataView y no del DataTable. Lo que me extraña es que no te elimine el registro de la vista cuando haces dv.Delete(), deebria marcar la fila como eliminada

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:Eliminar fila de bd usando un datagrid

Publicado por david (116 intervenciones) el 01/06/2004 11:25:17
Nada, no sale. Sabes alguna otra forma alternativa de eliminar un registro de la base de datos??? Gracias
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:Eliminar fila de bd usando un datagrid

Publicado por Edgar (1501 intervenciones) el 01/06/2004 17:59:58
Hola

Bueno.. una vez que determinaste la fila que deseas eliminar, puedes ejecutar directamente un comando Delete.. algo asi como

Dim cmd as SqlCommand
cmd = new SqlCommand()
cmd.CommandText = "DELETE FROM TABLA WHERE ID = ID_FILA"
cmd.Connection = Conexion
cmd.Open() (No me acuerdo ahora bien si este era el metodo)
cmd.ExecuteNonQuery()

Al hacer esto estarias ejecutando el comando y eliminando la fila de la base de datos

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