Cómo evitar que al hacer un refresh o requery no se produzca un cambio en el registro que estaba activo

Intentaré aclarar la pregunta. Mi situación es la siguiente. En un formulario se muestran datos de dos tablas relacionadas de 1 (Tabla A) a infinito (Tabla B). Por ejemplo, en la tabla A tengo un campo (DNI) relacionado con otro campo DNI de la Tabla B. Imaginemos que el DNI que tengo en la tabla A está repetido tres veces en la tabla B. Mi problema surge cuando en el formulario estoy viendo el segundo o tercer registro DNI de la tabla B. Tras ejecutar Refresh o Requery, el formulario pasa a mostrar el primer registro de la tabla B que coincide con el DNI de la tabla A que tenía activo.

¿Qué tengo que hacer para que, tras el refresh o requery se me siga mostrando el registro de la tabla B que estaba viendo?

Respuesta
1

Para que el código funcione la tabla tablaB debe tener un campo auto numérico.

Explicación:

Este ejemplo el formulario tiene como origen de datos la tablaB

Se debe guardar el ID antes de ejecutar el Requery y el Refresh

Se clona el recordset del formulario

Con FindFirst localizamos el recordset donde queremos regresar.

Se utiliza Bookmark para volver a la misma posición de registro donde estábamos antes de consultar.

¡Gracias! Funciona perfectamente.

Me ha surgido un problema que no tenía antes. Cuando entro dentro de un subformulario se produce un refresh y se pierde el registro activo, mostrándome el registro primero de la tabla B.

Intenta clonando el formulario principal desde el subformulario la línea seria algo como:

Set rs=Forms!formppal.Recordset.Clone

Acabo de ver el problema. En el fomulario principal tenía un comando que después de actualizar volvía a cargar el formulario, saltándose el código que tú me enviaste. Todo sigue funcionando a la perfección. Muchas gracias. Tu solución me ha venido muy bien. Era un problema que llevaba arrastrando desde hace tiempo.

Me alegro que todo este bien

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas