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

Problema con sentencia DELETE

Estas en el tema de Problema con sentencia DELETE en el foro de Visual Basic clásico en Foros del Web. El problema es que en el formulario que tengo, he puesto un boton para borrar registros. El botón hace su función pero cuando lo borra ...
  #1 (permalink)  
Antiguo 11/06/2007, 04:52
RyT
 
Fecha de Ingreso: mayo-2007
Mensajes: 20
Antigüedad: 17 años
Puntos: 0
Exclamación Problema con sentencia DELETE

El problema es que en el formulario que tengo, he puesto un boton para borrar registros. El botón hace su función pero cuando lo borra me sale un cartel de error diciendo: "Update o CancelUpdate sin AddNew o Edit". Este es el codigo que he utilizado, alguna sugerencia?:

Private Sub Command7_Click()
If Not vnombre = "" Then
sql = "Delete * from Clientes where Nombre = '" & vnombre & "'"
db.Execute sql
MsgBox ("Cliente Eliminado")
rd.Update
rd.MoveFirst
CargarValores
End If
End Sub
  #2 (permalink)  
Antiguo 11/06/2007, 05:26
 
Fecha de Ingreso: mayo-2007
Mensajes: 74
Antigüedad: 17 años
Puntos: 1
Re: Problema con sentencia DELETE

No pongas rd.Update
  #3 (permalink)  
Antiguo 11/06/2007, 05:38
Avatar de Korku  
Fecha de Ingreso: noviembre-2003
Ubicación: En un lugar oscuro...
Mensajes: 688
Antigüedad: 20 años, 5 meses
Puntos: 5
Re: Problema con sentencia DELETE

Cita:
Iniciado por RyT Ver Mensaje
El problema es que en el formulario que tengo, he puesto un boton para borrar registros. El botón hace su función pero cuando lo borra me sale un cartel de error diciendo: "Update o CancelUpdate sin AddNew o Edit". Este es el codigo que he utilizado, alguna sugerencia?:

Private Sub Command7_Click()
If Not vnombre = "" Then
sql = "Delete * from Clientes where Nombre = '" & vnombre & "'"
db.Execute sql
MsgBox ("Cliente Eliminado")
rd.Update
rd.MoveFirst
CargarValores
End If
End Sub
Hola,

Te sobra la línea rd.Update. De todas formas si quieres refrescar el recordset, sería rd.Refresh

Saludiños
__________________
Carpe diem quam minimum credula postero.


http://www.programador-freelance.es
  #4 (permalink)  
Antiguo 11/06/2007, 05:41
RyT
 
Fecha de Ingreso: mayo-2007
Mensajes: 20
Antigüedad: 17 años
Puntos: 0
Re: Problema con sentencia DELETE

Lo he cambiado por el rd.refresh pero me da un error y ahora ni siquiera ne borra el registro
  #5 (permalink)  
Antiguo 11/06/2007, 05:47
Avatar de Korku  
Fecha de Ingreso: noviembre-2003
Ubicación: En un lugar oscuro...
Mensajes: 688
Antigüedad: 20 años, 5 meses
Puntos: 5
Re: Problema con sentencia DELETE

Cita:
Iniciado por RyT Ver Mensaje
Lo he cambiado por el rd.refresh pero me da un error y ahora ni siquiera ne borra el registro
No me acabo de dar cuenta, en la sentencia DELETE sobra el *

Saludiños
__________________
Carpe diem quam minimum credula postero.


http://www.programador-freelance.es
  #6 (permalink)  
Antiguo 11/06/2007, 06:10
RyT
 
Fecha de Ingreso: mayo-2007
Mensajes: 20
Antigüedad: 17 años
Puntos: 0
Re: Problema con sentencia DELETE

No, no sobra el * porque esta en Access y la sentencia esta bien, ya le e quitado el rd.update y ese error ya no me da pero ahora lo que ocurre es que cuando lo elimino, se va al primer registro (hasta aqui va bien) pero si luego le doy a los botones de los cursores cuyos codigos son:

Siguiente:

rd.MoveNext
If rd.EOF Then
rd.MoveLast
End If
CargarValores


Ultimo:

rd.MoveLast
CargarValores

cuando yego al lugar donde estaba el registro me salta un error que dice. "error num xxxx de ejecucion, el registro esta eliminado"
  #7 (permalink)  
Antiguo 11/06/2007, 18:48
 
Fecha de Ingreso: mayo-2007
Mensajes: 74
Antigüedad: 17 años
Puntos: 1
Re: Problema con sentencia DELETE

Al eliminar un registro con una sentencia sql DELETE, el registro se marca como eliminado, pero el recordset rd no se actualiza (es independiente). Es más, DELETE no devuelve un recordset, asi que al recorrer el recordset con movenext, al llegar al o los registros eliminados se produce el error. Para evitar esto se debe actualizar el recordset rd después de eliminar el registro. No veo donde se genera el rd, habría que ver el código completo, no entiendo por qué usar un DELETE si hay un recordset abierto de la misma tabla. Mejor sería usar una sentencia SELECT para ir al registro que se va a eliminar, usar rd.Delete y después el rd.MoveFirst. Así el registro deja de estar disponible y no se genera el error de registro eliminado.
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 14:13.