Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

[SOLUCIONADO] borrar varios registros con delete sql

Estas en el tema de borrar varios registros con delete sql en el foro de Visual Basic clásico en Foros del Web. Hola a todos, quiero pedirles ayuda para lo sgte: Quiero eliminar varias filas de registros en un datagrid o truedbgrid acá les pongo el código ...
  #1 (permalink)  
Antiguo 24/04/2011, 17:32
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años, 7 meses
Puntos: 6
Pregunta borrar varios registros con delete sql

Hola a todos, quiero pedirles ayuda para lo sgte:

Quiero eliminar varias filas de registros en un datagrid o truedbgrid acá les pongo el código fuente:

Private Sub cmdeliminarproveedor_Click()
multiopcion = MsgBox("¿Desea Eliminar el Proveedor Seleccionado?", vbExclamation + vbYesNo, "Advertencia")
If multiopcion = vbYes Then Sí le decís que sí al msgbox
Set rstproveedores = cnnADODB.Execute("Delete from proveedores where codigoproveedor=" + Me.tdbgrid_proveedores.Columns(0).Text + "")te eliminar mediante la columna la fila seleccionada
Set rstproveedores = cnnADODB.Execute("Select * from proveedores")muestra las tabla con los datos actualizados
Me.adodb_proveedor.Refreshy refresca la BD
End If
End Sub

Set rstproveedores = cnnADODB.Execute("Delete from proveedores where codigoproveedor=" + Me.tdbgrid_proveedores.Columns(0).Text + "")acá descubrí que puedo eliminar los proveedores directamente del datagrid sólo seleccionando la fila que yo quiera

también descubrí que el delete de sql tiene una propiedad llamada in:

Set rstproveedores = cnnADODB.Execute("Delete from proveedores where codigoproveedor in (1,4,5)")

acá podemos observar que puedo borrar más de una fila de registros, el truco está en concatenar las columnas del datagrid cómo acá:

" + Me.tdbgrid_proveedores.Columns(0).Text + "

acá es dónde necesito ayuda, ¿pueden ayudarme?, sí responden este mje se los agradezco.
  #2 (permalink)  
Antiguo 25/04/2011, 06:35
 
Fecha de Ingreso: marzo-2011
Mensajes: 75
Antigüedad: 13 años, 8 meses
Puntos: 6
Respuesta: borrar varios registros con delete sql

Hola, no se si lo que queres es borrar todos los proveedores de el datagrid o solo algunos, si son solo algunos, te recomiendo que busques otra solución. En caso que sean todos haces un for que recorra las filas del datagrid y por cada fila que vaya eliminando el registro. Saludos
  #3 (permalink)  
Antiguo 26/04/2011, 05:40
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: borrar varios registros con delete sql

Hola, gracias x responder lo q quiero es borrar sólo las filas q selecciono del datagrud y que borre con esto:

" + Me.tdbgrid_proveedores.Columns(0).Text + " como condición del delete

dices con el for me gustaría ver tu idea en un código fuente con el delete de sql, sí pueden responder este mje se los agradezco.
  #4 (permalink)  
Antiguo 26/04/2011, 06:53
 
Fecha de Ingreso: marzo-2011
Mensajes: 75
Antigüedad: 13 años, 8 meses
Puntos: 6
Respuesta: borrar varios registros con delete sql

Mmmm.. con el datagrid no vas a poder borrar varias filas a la vez, vas a tener que hacerlo una a una. De esta manera.

En el datagrid seleccionas la fila que queres eliminar, tendrias que tener un boton Eliminar y ponerle este codigo adentro. Lo que hace es pregutnar si queres eliminar el dato, si es asi te borra el recordset y luego actualiza y hace un refresh del datagrid, es simple. Espero te sea de ayuda

With DataGrid1
If MsgBox("Se va a eliminar el registro : está seguro ", _
vbExclamation + vbYesNo, "Eliminar") = vbYes Then


rs.Delete

' Actualiza el recordset
rs.Update
DataGrid1.Refresh
End If
End With
  #5 (permalink)  
Antiguo 27/04/2011, 07:05
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: borrar varios registros con delete sql

sí lo dices, pero lo hago con sql, y lo q quiero es eliminar más de una fila, el código q mostré funciona lo más bien, seré honesto el MSHflexgrid no lo controlo bien es más cólo se enlazarlo con el ADODC y usar la prop. Colwidth, pero sabes usarlo, sí es así ¿podrías enseñarmelo?, xq en www.recursosvisualbasic.com.ar averigue y parece muy complejo el código fuente y quiero q sea simple el código para entenderlo bien, sí pueden responder este mje se los agradezco.
  #6 (permalink)  
Antiguo 08/05/2011, 19:34
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: borrar varios registros con delete sql

hola averigue lo sgte para esto sí alguien me quiere ayudar con el código fuente:

1ro hay que hacer una que borre un registro dado

2do hacer otra función para la lista de los registros a borrar

3ro y último desde la misma función llamar a la otra pasándole uno por uno los datos a borrar

sí pueden ayudarme con el código fuente, se los agradezco
  #7 (permalink)  
Antiguo 14/06/2011, 17:19
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: borrar varios registros con delete sql

hola después de tanta búsqueda lo logré con el listview:

Private Sub cmdeliminarproveedor()
multiopcion = MsgBox("¿Desea Eliminar el Proveedor Seleccionado?", vbExclamation + vbYesNo, "Advertencia")
If multiopcion = vbYes Then
For contador = Me.LVWproveedores.ListItems.Count To 1 Step -1
If Me.LVWproveedores.ListItems(contador).Selected = True Then
cnnADODB.Execute ("Delete from proveedores where codigoproveedor= " & Me.LVWproveedores.ListItems(contador).Text)
End If
Next contador
Call cargarListViewprov(LVWproveedores)
End If
End Sub

ahora lo que quiero es contar las filas seleccionadas del listview sí es una sóla fila que me muestre un msgbox simple, sí es más de una fila que me muestre la cantidad de filas que quiero borrar, no sé hacerlo ¿pueden ayudarme?, sí responden este mje se los agradezco.
  #8 (permalink)  
Antiguo 15/06/2011, 07:25
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 15 años, 1 mes
Puntos: 47
Respuesta: borrar varios registros con delete sql

Pues copiando de tu CODE, haz un contador antes de preguntar, algo asi:

Código vb:
Ver original
  1. 'PRIMERO CUENTAS LAS LINEAS QUE TIENES SELECCIONADAS
  2.   Dim CONT as Integer
  3.  
  4.    For contador = Me.LVWproveedores.ListItems.Count To 1 Step -1
  5.       If Me.LVWproveedores.ListItems(contador).Selected = True Then   CONT=CONT+1
  6.    Next contador
  7.  
  8. 'DESPUES HACES LAS PREGUNTAS
  9.   If CONT>1 then
  10.       multiopcion = MsgBox("¿Desea Eliminar estos " & CONT & " Proveedores?", vbExclamation + vbYesNo, "Advertencia")
  11.    Else
  12.       multiopcion = MsgBox("¿Desea Eliminar el Proveedor Seleccionado?", vbExclamation + vbYesNo, "Advertencia")
  13.    End if
  14.  
  15.    If multiopcion = vbYes Then
  16. ...
  17. ...
  18. ...

OJO: No probé el CODE, pero debe funcionar bien
  #9 (permalink)  
Antiguo 17/06/2011, 19:36
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: borrar varios registros con delete sql

hola gracias x tu respuesta lokoman y para los que quieren el código sé los doy:

Private Sub cmdeliminarproveedor()
For contarfilas = 1 To Me.LVWproveedores.ListItems.Count Step 1
If Me.LVWproveedores.ListItems(contarfilas).Selected = True Then
contarfilasmarcadas = contarfilasmarcadas + 1
End If
Next contarfilas
If contarfilasmarcadas > 1 Then
If MsgBox("¿Desea Eliminar " & contarfilasmarcadas & " Proveedores?", vbExclamation + vbYesNo, "Advertencia") = vbYes Then
Call borrarproveedoresseleccionados
contarfilasmarcadas = 0
Else
contarfilasmarcadas = 0
End If
Else
If MsgBox("¿Desea Eliminar el Proveedor Seleccionado?", vbExclamation + vbYesNo, "Advertencia") = vbYes Then
Call borrarproveedoresseleccionados
contarfilasmarcadas = 0
Else
contarfilasmarcadas = 0
End If
End If
End Sub

las variables contarfilas y contarfilasmarcadas son enteras y la función que uso para borrar los proveedores seleccionados es esta:

Private Sub borrarproveedoresseleccionados()
For contarfilas = Me.LVWproveedores.ListItems.Count To 1 Step -1
If Me.LVWproveedores.ListItems(contarfilas).Selected = True Then
cnnADODB.Execute ("Delete from proveedores where codigoproveedor= " & Me.LVWproveedores.ListItems(contarfilas).Text)
End If
Next contarfilas
Call cargarListViewprov(LVWproveedores)
End Sub

y la función para cargar mi listview de nuevo es esta:

Public Sub cargarListViewprov(LVWproveedores As ListView)
Set rstproveedores = cnnADODB.Execute("select * from proveedores order by nombreproveedor")
LVWproveedores.ListItems.Clear
While Not rstproveedores.EOF
On Error Resume Next
Set listaproveedores = LVWproveedores.ListItems.Add(, , rstproveedores(0))
listaproveedores.SubItems(1) = rstproveedores(1)
listaproveedores.SubItems(2) = rstproveedores(2)
listaproveedores.SubItems(3) = rstproveedores(3)
listaproveedores.SubItems(4) = rstproveedores(4)
rstproveedores.MoveNext
Wend
End Sub

aclaro que esta función está en mi módulo, y gracias a todos.
  #10 (permalink)  
Antiguo 20/06/2011, 07:08
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 15 años, 1 mes
Puntos: 47
Respuesta: borrar varios registros con delete sql

  #11 (permalink)  
Antiguo 23/06/2011, 12:50
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: borrar varios registros con delete sql

hola de nuevo le hice una corrección al código:

en el botón:

Private Sub cmdeliminarproveedor()
For contarfilas = 1 To Me.LVWproveedores.ListItems.Count Step 1
If Me.LVWproveedores.ListItems(contarfilas).Selected = True Then
contarfilasmarcadas = contarfilasmarcadas + 1
End If
Next contarfilas
If contarfilasmarcadas > 1 Then
mjeborrar = MsgBox("¿Desea Eliminar " & contarfilasmarcadas & " Proveedores?", vbExclamation + vbYesNo, "Advertencia")
Else
mjeborrar = MsgBox("¿Desea Eliminar el Proveedor Seleccionado?", vbExclamation + vbYesNo, "Advertencia")
End If
If mjeborrar = vbYes Then
Call borrarproveedoresseleccionados
Else
contarfilasmarcadas = 0
End If
End Sub

y en la función:

Private Sub borrarproveedoresseleccionados()
For contarfilas = Me.LVWproveedores.ListItems.Count To 1 Step -1
If Me.LVWproveedores.ListItems(contarfilas).Selected = True Then
cnnADODB.Execute ("Delete from proveedores where codigoproveedor= " & Me.LVWproveedores.ListItems(contarfilas).Text)
End If
Next contarfilas
Call cargarListViewprov(LVWproveedores)
contarfilasmarcadas = 0
End Sub

después lo demás se mantiene.

Etiquetas: borrar, delete, registros, sql
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 03:55.