Foros del Web » Programación para mayores de 30 ;) » .NET »

borrar una sola fila del datagridview

Estas en el tema de borrar una sola fila del datagridview en el foro de .NET en Foros del Web. hola amigos, como siempre por aquí dando la paliza, busco una ayudita, tengo una opción en mi aplicacíon que borra los registros de un datagridview ...
  #1 (permalink)  
Antiguo 21/12/2010, 14:54
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 14 años
Puntos: 5
Pregunta borrar una sola fila del datagridview

hola amigos, como siempre por aquí dando la paliza, busco una ayudita, tengo una opción en mi aplicacíon que borra los registros de un datagridview que tengo, pero el problema es que quiero borrar la fila seleccionada y no todas, ¿sabeis como puedo hacerlo?, os envío el códig que me borra todo, gracias....por adelantaod

'Declaraciones
Dim cmBorra As OleDbCommand
Dim i As Integer
'Dim cn As OleDbConnection

'Construimos y abrimos la conexión con la base de datos
'cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\cb.mdb")
conexion.Open()

'Preparamos el comando
cmBorra = New OleDbCommand("DELETE FROM ETCB Where Producto=@P")
cmBorra.Parameters.Add("@P", OleDbType.VarChar)
'cmBorra.Parameters.Add("@C", OleDbType.Numeric)
cmBorra.Connection = conexion
For i = 0 To undataset.Tables(0).Rows.Count - 1
'rellenamos el valor de los parámetros
cmBorra.Parameters("@P").Value = undataset.Tables(0).Rows(i)("Producto").ToString()
'cmBorra.Parameters("@C").Value = undataset.Tables(0).Rows(i)("Cantidad").ToString()
' 'realizamos el alta
cmBorra.ExecuteNonQuery()
Next
MessageBox.Show("Se ha borrado todo el contenido")
'Cerramos la conexion con la base de datos
conexion.Close()
actualizar_grid()
  #2 (permalink)  
Antiguo 21/12/2010, 15:59
Avatar de devilinside  
Fecha de Ingreso: marzo-2008
Ubicación: En Perú
Mensajes: 73
Antigüedad: 16 años, 8 meses
Puntos: 6
Respuesta: borrar una sola fila del datagridview

No incluyas un for, por que con eso estarás ejecutando una eliminación para cada fila.


Cita:
'Si no hay una fila seleccionada, sadrá del procedimiento sin hacer ningun cambio
If IsNothing(Me.dagatridview1.CurrentRow) Then
Exit Sub
End If

'Declaraciones
Dim cmBorra As OleDbCommand
Dim i As Integer
'Dim cn As OleDbConnection

'Construimos y abrimos la conexión con la base de datos
'cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\cb.mdb")
conexion.Open()

'Preparamos el comando
cmBorra = New OleDbCommand("DELETE FROM ETCB Where Producto=@P")

cmBorra.Parameters.Add("@P", OleDbType.VarChar)
cmBorra.Connection = conexion
'rellenamos el valor del parámetro
cmBorra.Parameters("@P").Value = Me.DataGridView1.CurrentRow.Cells("Producto").Valu e
'realizamos el alta
cmBorra.ExecuteNonQuery()

MessageBox.Show("Se ha borrado La fila seleccionada")
'Cerramos la conexion con la base de datos
conexion.Close()

actualizar_grid()
También sería importante que en las propiedades del DataGridView asignes False a la propiedad MultiSelect desde la ventana de Diseño, para evitar que seleccionen varias filas a la vez.

Saludos
  #3 (permalink)  
Antiguo 21/12/2010, 16:31
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 14 años
Puntos: 5
Respuesta: borrar una sola fila del datagridview

es la pera, gracias amigo, algún día podré ayudarte yo a ti, o eso espero, por cierto eres un crack...siempre recibo en los foros respuestas de perú..que pasa sois unas craks...¡¡¡, debo darme un viajecito a que me enseñeis a programar bien en .net...lo mio era vb6 y esto me supera con los puñeteros dataset...gracias amigo
  #4 (permalink)  
Antiguo 21/12/2010, 16:42
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 14 años
Puntos: 5
Respuesta: borrar una sola fila del datagridview

Cita:
Iniciado por devilinside Ver Mensaje
No incluyas un for, por que con eso estarás ejecutando una eliminación para cada fila.



También sería importante que en las propiedades del DataGridView asignes False a la propiedad MultiSelect desde la ventana de Diseño, para evitar que seleccionen varias filas a la vez.

Saludos
sabes que me sucede?¿?, que antes tu mismo me enviaste un código para poder conseguir que el contenido de la cantidad se transformara en filas, entonces yo ahora pongo;

PRODUCTO X CANTIDAD 4
Y ME CREA 4 FILAS DEL PRODUCTO X CON LA CANTIDAD 1, el caso es que si quiero borrar una de esas filas me borra todas las del producto X, quiere decir la toma como una sola fila...se que soy un coñazo pero con esto termino el puñetero programitaaaaaaaa, te mando el código que me habías enviado, gracias amigo....

Dim cmAlta As New OleDbCommand
Dim i As Integer
Dim cn As New OleDbConnection
Dim CantTmp As Integer
Dim j As Integer

''Construimos y abrimos la conexión con la base de datos
cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\cb.mdb")
cn.Open()

For i = 0 To undataset.Tables(0).Rows.Count - 1
cmAlta = New OleDbCommand("INSERT INTO ETCB(Producto,Cantidad) VALUES(@P,@C)")
cmAlta.Parameters.Add("@P", OleDbType.VarChar)
cmAlta.Parameters.Add("@C", OleDbType.Numeric)
cmAlta.Connection = cn
'rellenamos el valor de los parámetros

CantTmp = CInt(undataset.Tables(0).Rows(i)("Cantidad"))
For j = 0 To CantTmp - 1
cmAlta.Parameters("@P").Value = undataset.Tables(0).Rows(i)("Producto").ToString
cmAlta.Parameters("@C").Value = 1
cmAlta.ExecuteNonQuery()
Next
Next
MessageBox.Show("Se ha Guardado el contenido")
'Cerramos la conexion con la base de datos
cn.Close()
actualizar_grid()
  #5 (permalink)  
Antiguo 21/12/2010, 17:37
Avatar de devilinside  
Fecha de Ingreso: marzo-2008
Ubicación: En Perú
Mensajes: 73
Antigüedad: 16 años, 8 meses
Puntos: 6
Respuesta: borrar una sola fila del datagridview

claro, es natural lo que está sucediento. por que en tu sentencia estás eliminando a todos los productos que coincidan con el Nombre de producto que le estás enviando y existen varios.

Lo que debes hacer es agregar un campo (columna) en tu tabla ETCB, para poder diferenciar cada línea almacenada en tu tabla. Este campo debe contener valores únicos, y son comunmente conocidos como Claves Primarias o Primary Key (documentate un poco respecto al tema)

De tal modo que ahora tu tabla quedará mas o menos así:

------------------------------------------------
CodProducto - Producto - Cantidad
1--------------- Caramelos ---- 1
2--------------- Galletas ------- 1
3--------------- Galletas ------- 1
4--------------- Chocolates ---- 1
5----------------- Chocolates ---- 1
------------------------------------------------

De este modo si mandas a borrar de la siguiente manera
DELETE FROM ETCB Where CodProducto=@Cod
no habrán dos productos con un mismo código y se eliminará solamente el indicado.

Recuerda, este campo debe ser único y obligatorio. Te ahorrarás problemas si lo creas como un campo del tipo Identity, que quiere decir que el campo se autogenera y no es necesario que te preocupes por mandar a guardar dicho valor, sino q el mismo gestor de BD se encarga de generarlo...

bueno, espero haberme dejado entender.
(averigua sobre Claves Primarias o Primary Key)


Saludos

Última edición por devilinside; 21/12/2010 a las 17:40 Razón: por formato
  #6 (permalink)  
Antiguo 22/12/2010, 01:44
 
Fecha de Ingreso: noviembre-2010
Ubicación: madrid
Mensajes: 478
Antigüedad: 14 años
Puntos: 5
Respuesta: borrar una sola fila del datagridview

se de lo que me hablas, lo hago en otras partes del programita...claro joer como no me he dado cuenta, muchas gracias amigo...feliz navidad...

Etiquetas: borrar, datagridview, fila
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:23.