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

Error al mover despues de eliminar registro en ADO

Estas en el tema de Error al mover despues de eliminar registro en ADO en el foro de Visual Basic clásico en Foros del Web. Hola gente, tengo un problema que me está volviendo loco. Resulta que tengo una consulta cargada en un recordset usando ADO y la tengo configurada ...
  #1 (permalink)  
Antiguo 25/06/2006, 21:26
Avatar de marcos1979  
Fecha de Ingreso: abril-2004
Ubicación: 62º 06' 18" O / 33º 07' 47" S
Mensajes: 331
Antigüedad: 20 años
Puntos: 1
Error al mover despues de eliminar registro en ADO

Hola gente, tengo un problema que me está volviendo loco. Resulta que tengo una consulta cargada en un recordset usando ADO y la tengo configurada para actualizar por lotes, asi puedo hacer todos los cambios y guardar al final. Resulta que si elimino un registro e intento moverme para salir del registro ya eliminado me da "Error -2147217842 (80040e4e) Operacion cancelada" El codigo es este y creo que no tiene nada raro:

Código:
    rs.Delete
    rs.MoveNext 'Aca es donde da el error
    If rs.EOF = True Then
        rs.MovePrevious
    End If
Recalco que no me da error porque EOF o BOF estan a True, el error es muy explicito... Operacion cancelada

Que es lo que está pasando???

Un saludo
__________________
Marcos

El dinero no da la felicidad... démelo y sea feliz!!!
  #2 (permalink)  
Antiguo 26/06/2006, 11:20
Avatar de Eärandir  
Fecha de Ingreso: junio-2006
Ubicación: Torreón, México
Mensajes: 21
Antigüedad: 17 años, 10 meses
Puntos: 0
Código:
with TURecordset
 .Delete
 IF .EOF then
  .MoveLast
 else
  .movenext
 end if
end with
lo que esta pasando es que primero tratas de mover tu recorset al siguiente y despues hacer la comprobación del EOF, primero tendrías que hacer la comprobación del EOF para ver si lo puedes mover.
__________________
If you want to know the answers, then u gotta ask the questions
  #3 (permalink)  
Antiguo 26/06/2006, 13:03
Avatar de marcos1979  
Fecha de Ingreso: abril-2004
Ubicación: 62º 06' 18" O / 33º 07' 47" S
Mensajes: 331
Antigüedad: 20 años
Puntos: 1
No, al eliminar el registro, éste sigue siendo el actual hasta que se mueve, ahi esta el problema, no importa a donde lo mueva me sale el error "Operacion cancelada" y no que "la propiedad EOF o BOF esta a True" como deberia darme al intentar mover. Si, en lugar de usar actualizacion por lotes uso inmediata no da error, osea, si despues de eliminar el registro guardo los cambios y muevo anda perfecto, pero si quiero seguir trabajando sin guardar me da error y no es siempre (aunque sea siempre en las mismas condiciones :S). Ya me pasó que si se cancela un registro nuevo al cual se le asignaron tipos erroneos de datos a un campo da error y es un problema documentado de MS (y me causo dolor de cabeza hasta que lo encontré) pero con esto no encontré nada.

Gracias y un saludo
__________________
Marcos

El dinero no da la felicidad... démelo y sea feliz!!!
  #4 (permalink)  
Antiguo 26/06/2006, 14:27
Avatar de Eärandir  
Fecha de Ingreso: junio-2006
Ubicación: Torreón, México
Mensajes: 21
Antigüedad: 17 años, 10 meses
Puntos: 0
Si te dice da mensaje de "Operación Cancelada" debes tener un ".Edit" que no es necesario en algún lado de tu código.
__________________
If you want to know the answers, then u gotta ask the questions
  #5 (permalink)  
Antiguo 26/06/2006, 14:35
Avatar de marcos1979  
Fecha de Ingreso: abril-2004
Ubicación: 62º 06' 18" O / 33º 07' 47" S
Mensajes: 331
Antigüedad: 20 años
Puntos: 1
No, muevo al registro en cuestion (cualquier edicion anterior es reflejada por lo que no se esta editando nada, EditMode=0) y despues rs.Delete, rs.MoveADondeSea Error algunas veces si, otras no.

Supongamos que el rs está vacio, agrego registros (siempre "desconectado", para actualizar todo al final), luego decido borrar uno de los registros recien agregados (no viene al caso el porque) y ahi da error. Si, en cambio, reflejo los cambios uno por uno ahi no pasa nada y todos felices (menos yo)

Un saludo y gracias
__________________
Marcos

El dinero no da la felicidad... démelo y sea feliz!!!
  #6 (permalink)  
Antiguo 26/06/2006, 14:40
Avatar de Eärandir  
Fecha de Ingreso: junio-2006
Ubicación: Torreón, México
Mensajes: 21
Antigüedad: 17 años, 10 meses
Puntos: 0
Como ya mencioné, tendrías que comprobar primero si es EOF o BOF y despues de eso, hacer el movimiento.

Pero fuera de eso me quedo con cara de "?????"
__________________
If you want to know the answers, then u gotta ask the questions
  #7 (permalink)  
Antiguo 26/06/2006, 14:46
Avatar de marcos1979  
Fecha de Ingreso: abril-2004
Ubicación: 62º 06' 18" O / 33º 07' 47" S
Mensajes: 331
Antigüedad: 20 años
Puntos: 1
Ok, en estos momentos no estoy en mi pc, pero segun recuerdo el error me diria claramente que el problema es Eof o Bof y no un triste "Operacion cancelada" y creo haber comprobado eso, despues lo confirmo. Otra cosa, por que si la actualizacion es inmediata no da error???

Si vieras mi cara!!!

Un saludo y ya confirmaré totalmente tu (mi) duda.
__________________
Marcos

El dinero no da la felicidad... démelo y sea feliz!!!
  #8 (permalink)  
Antiguo 26/06/2006, 21:38
Avatar de marcos1979  
Fecha de Ingreso: abril-2004
Ubicación: 62º 06' 18" O / 33º 07' 47" S
Mensajes: 331
Antigüedad: 20 años
Puntos: 1
Bueno, creo que está. Las propiedades Bof y Eof estan a False cuando da el error. Lo que noté es que la propiedad EditMode estaba en adEditAdd por mas que haga rs.Update. Si despues de agregar un registro muevo la posicion para que me ponga EditMode = 0 ya no da error, pense que update pondria EditMode = 0 pero parece que no, salvo que guarde los cambios en la BD... igualmente podria ser un poco mas descriptivo el error, no?

Me dijiste:

Cita:
Si te dice da mensaje de "Operación Cancelada" debes tener un ".Edit" que no es necesario en algún lado de tu código.
No era presisamente asi pero mas o menos:

Cita:
No, muevo al registro en cuestion (cualquier edicion anterior es reflejada por lo que no se esta editando nada, EditMode=0) y despues rs.Delete, rs.MoveADondeSea Error algunas veces si, otras no.
Las veces "si" era cuando no movia la posicion despues de agregar un registro nuevo

Un gran saludo y gracias!!!
__________________
Marcos

El dinero no da la felicidad... démelo y sea feliz!!!
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 03:27.