Cómo actualizar datos en base de datos Access dividida

Esta pregunta la he realizado pero no logro que la BD se actualice "on line" cuando desde otras Pc cargan datos. La BD se encuentra dividida.

Utilizo en un botón el comando:

DoCmd. RunCommand acCmdSaveRecord
Me. Refresh

Pero para que yo vea desde mi Pc lo que cargó otro tengo que salir del formulario y volver a reingresar para ver el nuevo registro o una modificación hecha a un registro antiguo. Esto pasa en cualquier Pc (son 8 Pc desde las que se cargan datos pero no es intensivo, o sea, no están todos cargando a destajo).

No quiero usar Me. Requery porque quiero que después de "guardar" se quede en el registro que se modificó.

Respuesta
2

Con:

DoCmd. RunCommand acCmdSaveRecord
Me. Refresh

Guardas el registro desde el PC que lo modificó, y no te hace falta poner el refresh, porque los datos ya los tienes en pantalla.

Desde los otros PCs, has de usar Me. Requery para cargar de nuevo los datos de la tabla, con los posibles cambios que haya en ella. Siempre puedes guardar el identificador del registro en el que estás, hacer el requery, y moverte al registro. Es la única forma que tienes de hacerlo.

Imaginemos que tienes un botón Actualizar, y un campo ID, una forma sería:

Private sub cmdActualizar_Click()

Dim temp as Long

Dim rst As DAO.Recordset

temp=Me.ID

Me.Requery

Set rst = CurrentDb.OpenRecordset("TuTabla", dbOpenSnapshot)
rst.FindFirst "ID=" & miID
temp= rst.AbsolutePosition + 1
rst.Close
Set rst = Nothing

DoCmd.GoToRecord , , acGoTo, temp

End Sub

En la pregunta cometí un error y es que las modificaciones en un registro "viejo" sí se actualizan. No lo hacen los nuevos registros.

Con esto que me explicás debería agregar un botón al formulario con el evento. 

Bueno, uno deseaba como una "automatización" pero se hará así.

Te mando un abrazo y muchas gracias por la respuesta inmediata.

El código lo puedes poner en el botón de guardado, pero no te quita tener que indicarle de alguna forma a las BDs de los otros PCs que se tienen que actualizar...

Hola Sveinbjorn, he colocado el código en un nuevo botón pero me lleva igualmente al primer registro, es decir, no se queda en el registro que me encontraba antes de "actualizar" (lo de la variable miID está corregido, y la tabla está la tabla que corresponde).

Si paso el Me.Requery antes del DoCmd.GoToRecord , , acGoTo, temp me lleva a cualquier registro tipo aleatorio.

Acabo de ver que en el código hay un error: la variable que declaro y almacena el valor del ID se llama temp, sin embargo (por costumbre), en la linea del findFirst uso otra que ni existe ni tiene valor (miID).

Si cambias esa linea por esta otra: rst.FindFirst "ID=" & temp

Te tendría que funcionar.

Yo lo he probado (con esta BD) y funciona correctamente.

Por cierto, se me ocurrió una forma de hacer las actualizaciones sin necesidad de un botón: programar el evento Timer del formulario para que cada x segundos corra el código.

Un abrazo.


Gracias, realicé el cambio y funciona perfectamente.

Muy bueno lo de colocar el código en el evento Timer. 

Un abrazo, suerte.

Me alegra que te sirvieran mis soluciones. Saludos!


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas