Error 2105 al insertar registro en relación N:M

Hay una relación N:M entre dos tablas ALUMNOS y PERSONAS_VINCULADAS que he implementado mediante una tabla auxiliar RELACION_ALUMNOS_VINCULOS que contiene el Id_Alumno (de la tabla ALUMNOS) y el Id_Vinculo (de la tabla PERSONAS_VINCULADAS). Las relaciones entre las tablas se definen exigiendo Integridad referencial, Actualizar en cascada y borrar en cascada.
En un momento dado muestro todas las personas vinculadas a un alumno concreto (abro un Recordset) y todo va bien. Mi problema aparece cuando intento dar de alta una nueva persona vinculada, utilizando para ello el comando:
DoCmd. GoToRecord,, acNewRec
Entiendo que esto supone la inserción en dos tablas: Una nueva persona vinculada en PERSONAS_VINCULADAS y un registro en RELACION_ALUMNOS_VINCULOS para reflejar la nueva relación entre el alumno actual y la nueva persona.
Pues bien, A PESAR DE QUE ESAS DOS INSERCIONES SE REALIZAN CORRECTAMENTE, siempre me aparece el error 2105: No se puede ir al registro especificado.
Como digo, no tiene consecuencias prácticas, porque la inserción en ambas tablas es correcta, pero obviamente no quiero que aparezca en pantalla el error. (Si lo intento filtrar no se producen las inserciones en las tablas, con lo cual es peor el remedio que la enfermedad).
¿Hay alguna manera de evitarlo?

1 respuesta

Respuesta
Lo ideal seria ver porque se produce el error (no acabé de entender el problema).
Añade un control de errores al procedimiento y maneja el numero de error 2105. La acción, visto que lo hace todo bien, seria un simple Resume Next.
Xavi
Intenté dar una visión global para no preguntar "a saco", pero resumo:
En el caso de modelizar una relación N:M, ir a un nuevo registro supone insertar en dos tablas: además de la obvia (la que contendrá en mi caso a la nueva persona vinculada), también en la tabla intermedia (RELACION_ALUMNOS_VINCULO).
Como he comentado, si añado un control de errores, efectivamente el error no se muestra en pantalla, pero LA INSERCIÓN NO SE REALIZA, con lo cual este método no sirve. Debe ser que el control de errores para la ejecución de "DoCmd.GoToRecord,, acNewRec" y no le da tiempo a insertar el nuevo registro.
Una pista más, por si ayuda:
Para mostrar las personas vinculadas a un alumno concreto hay un filtro en el formulario que las selecciona (las que están en la tabla RELACION_ALUMNOS_VINCULOS). Pues bien, si aún no se ha añadido ninguna persona vinculada a un alumno concreto, y abro el formulario, EL FILTRO FUNCIONA CORRECTAMENTE y se posiciona en un nuevo registro, realizando correctamente la inserción en ambas tablas sin necesidad de ninguna instrucción adicional Y SIN DAR ERROR.
Es la instrucción "DoCmd.GoToRecord,, acNewRec" la que provoca el error 2105 cuando la ejecuto estando el formulario ya abierto (es decir, cuando ya hay personas vinculadas a este alumno concreto).
¿Alguien sabe las diferencias internas de Access cuando abre un formulario aplicando un filtro (que no da ningún registro como resultado) y cuando se solicita que se posicione en un registro nuevo mediante acNewRec?
Me temo que hay algo que se me escapa, porque no soy capaz de entender la estructura lógica que propones. No entiendo que tipo de datos guardas en cada tabla ni que relación se establece entre las distintas tablas.
Es posible que algunos datos de ejemplo me ayudaran un poco.
Solo hay una cosa que si que entiendo. Cuando añades un registro a una tabla, sólo lo añades a esa tabla, a ninguna más.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas