Visual Basic - Actualizacion inmediata de recordset

Life is soft - evento anual de software empresarial
 
Vista:

Actualizacion inmediata de recordset

Publicado por jirm (58 intervenciones) el 22/08/2002 13:53:49
Conectando a una base de datos de Jet4.0 con ADO me encuentro que cuando borro un registro con recordset.delete no consigo que se actualize el recordset "inmediatamente" sino que me encuentro con que el motor JET actualiza unos instantes despues y esto me provoca problemas en los controles de lista que uso para visualizar los registros (los controles siguen mostrando los registros borrados)

He intentado formar el recordset de varias maneras y no resuelvo nada.
Es decir usando el objeto cmd, formandolo como tabla en el metodo open , etc...
He probado todo lo que se me ha ocurrido, y solo he encontrado la solucion "chapuza" de destruir el objeto connection del recordset cerrar el recordset y rehacer de nuevo la conexion y nuevamente el recordset.
Por supuesto he probado los metodos recordset.requery,recordset.update, recordset.updatebatch y no hay forma !.

Agradeceria alguna sugerencia....
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:Actualizacion inmediata de recordset

Publicado por susana (56 intervenciones) el 22/08/2002 19:54:09
después de borrar utilizando el método delete hay que moverse a otro registro para asegurarse de que no habrá intentos de hacer referencia a datos pertenecientes a un registro eliminado:
rs.Delete
rs.MoveNext
if rs.EOF then rs.MoveLast
Si despues de esto los controles no se actualizan prueba con el método refresh de los controles, pero lo normal es que se actualicen. El datagrid, datacombo y datalist lo hacen. Si no es asi prueba:
datagrid.Refresh
datacombo.Refresh....
suerte
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:Actualizacion inmediata de recordset

Publicado por jirm (58 intervenciones) el 23/08/2002 21:04:18
Gracias a todos :-))

Parece que tengo ahora una idea más clara...

Despues de muuuuchas pruebas he llegado a las siguientes conclusiones:

Las instrucciones que mejor resultado han dado han sido:

rsconsfactprov.Delete
rsconsfactprov.UpdateBatch
If Not rsconsfactprov.EOF Then
rsconsfactprov.MoveNext
Else
rsconsfactprov.MoveLast
End If
rsconsfactprov.MovePrevious
rsconsfactprov.Requery

'aqui actualizar el control que visualize el recordset
listrs.refresh

Bueno... aun no tengo claro por que no di en la clave pero creo que el .updatebatch (lo saque de la ayuda de ADO) puede tener "la culpa".

Saludos a todo/as.
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