Visual Basic.NET - Borrar de la bd usando datagrid y button

 
Vista:

Borrar de la bd usando datagrid y button

Publicado por David (116 intervenciones) el 20/05/2004 11:14:40
Hola!! Mi problema es que no se borrar de la bd dando a un boton con un elemento seleccionado en un datagrid. Alguien puede completar mi codigo??
Dim cm As CurrencyManager = CType(Me.BindingContext(DGProvMp.DataSource, DGProvMp.DataMember), CurrencyManager)
Dim dv As DataView = CType(cm.List, DataView)
Dim dr As DataRow
dr = dv.Item(cm.Position).Row

Ahora en dr tengo la fila que quiero eliminar, pero no se como hacerlo. Lo intente con un datatable, dataset y dataadapter pero esta expresion no me deja
MiTabla.Rows.Remove(dr) xq dice q no esta en la tabla.
Alguien sabe como solucionarlo?
Gracias y saludos!!!
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:Borrar de la bd usando datagrid y button

Publicado por Edgar (1501 intervenciones) el 20/05/2004 15:03:52
Hola

Elimina la fila de la vista haciendo dv.Delete( dr ) . Cuando eliminas la fila de la vista, esta se marca como eliminada en la tabla.

También puedes cambiar el código para que en vez de hacer el casting (CType) a una vista lo haga contra un datatable

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

Sigo sin poder hacerlo

Publicado por david (116 intervenciones) el 20/05/2004 17:34:53
Hola!! Podrias ponerme un ejemplo de como hacerlo xq no me sale. Yo tengo un datarow llamado dr en el q esta el registro a eliminar.
Dim cm As CurrencyManager = CType(Me.BindingContext(DGProvMp.DataSource, DGProvMp.DataMember), CurrencyManager)
Dim dv As DataView = CType(cm.List, DataView)
Dim dr As DataRow
dr = dv.Item(cm.Position).Row

Eso creo q esta bien, a partir de ahi me da errores.
Gracias de nuevo
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:Sigo sin poder hacerlo

Publicado por Edgar (1501 intervenciones) el 20/05/2004 18:12:13
Hola...

Despúés de eso escribes..

dv.Delete ( cm.Position )
dataAdapter1.Update ( dataset )

Espero que te funcione....

Si te sigue dando errores, coloca el código que estás usando o contáctame por correo...

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:Sigo sin poder hacerlo

Publicado por David (116 intervenciones) el 20/05/2004 18:40:11
Hola. Con este codigo elimino la fila del datagrid, pero en la base de datos no me hace nada. A ver si puedes ayudarme.

Private Sub BBorrarProvMp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBorrarProvMp.Click
Dim cm As CurrencyManager = CType(Me.BindingContext(DGProvMp.DataSource, DGProvMp.DataMember), CurrencyManager)
Dim dv As DataView = CType(cm.List, DataView)
Dim dr As DataRow
dr = dv.Item(cm.Position).Row
Dim CadenaConexion As String = "Server=DAVID; UID=David; pwd=Luxardo; database=Luxardo"
Dim conn As New SqlConnection(CadenaConexion)
conn.Open()
Dim comando As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM ProveedoresMp", conn)
Dim MiDataSet As DataSet = New DataSet
comando.Fill(MiDataSet, "ProveedoresMp")
dv.Delete(cm.Position)
Dim comandos As SqlCommandBuilder = New SqlCommandBuilder(comando)
comando.Update(MiDataSet, "ProveedoresMp")
conn.Close()
End Sub

Gracias de nuevo
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

Actualizo datagrid pero no base de datos

Publicado por David (116 intervenciones) el 20/05/2004 18:43:12
hola!! Ahora borro registros en el datagrid, pero cuando miro la base de datos sigue igual. A ver si me puedes ayudar. Gracias por todo.

Private Sub BBorrarProvMp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBorrarProvMp.Click
Dim cm As CurrencyManager = CType(Me.BindingContext(DGProvMp.DataSource, DGProvMp.DataMember), CurrencyManager)
Dim dv As DataView = CType(cm.List, DataView)
Dim dr As DataRow
dr = dv.Item(cm.Position).Row
Dim CadenaConexion As String = "Server=DAVID; UID=David; pwd=Luxardo; database=Luxardo"
Dim conn As New SqlConnection(CadenaConexion)
conn.Open()
Dim comando As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM ProveedoresMp", conn)
Dim MiDataSet As DataSet = New DataSet
comando.Fill(MiDataSet, "ProveedoresMp")
dv.Delete(cm.Position)
Dim comandos As SqlCommandBuilder = New SqlCommandBuilder(comando)
comando.Update(MiDataSet, "ProveedoresMp")
conn.Close()
End Sub

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:Actualizo datagrid pero no base de datos

Publicado por Edgar (1501 intervenciones) el 20/05/2004 20:29:58
Hola

En primer lugar no llenes de nuevo el DataSet (usar el método Fill) puesto que ya tuviste que haberlo llenado antes para poder mostrar los datos en el datagrid.

Por otra parte, veo que estás creando el DataAdapter en el mismo método... La razón por la que no te actualiza es porque ese Adaptador no sabe como actualizar, le falta el UpdateCommand, es decir, debes agregar una línea más de código, algo así como

comando.UpdateCommand = new SqlCommand("update .... ")
comando.Update(MiDataSet, "ProveedoresMp")

Te recomiendo que crees el adaptador usando el ayudante (o wizard) que te proporciona Visual Basic, puesto que el comando Update es un poco más complicado de lo que parece, ya que hay que indicar parámetros...

De todas formas, puedes ver el siguiente ejemplo para que veas como se crea el comando Update.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataIDbDataAdapterClassUpdateCommandTopic.asp

Si el adaptador que usaste para llenar el grid la primera vez lo hiciste así puedes usarlo para actualizar la información en 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

RE:Actualizo datagrid pero no base de datos

Publicado por Edgar (1501 intervenciones) el 21/05/2004 03:39:12
Mil disculpas... pero me equivoque en una cosa.. no debes crear el UpdateCommand sino el DeleteCommand debido a que lo que deseas es eliminar la columna.. de todas formas, también deberi tener el UpdateCommand si deseas permitir la modificación de los 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