Relaciones de tablas

Supongo que mi pregunta será muy sencilla pero hace mucho que o toco access y me está costando.
Se trata de relacionar varias tablas:
1ª Padres, sus datos y como clave principal NIF
2ª Hijos, relacionados mediante el NIF con cada padre, puede haber varios nombres iguales de hijos, pero no si son de un mismo NIF (es decir, un padre no puede tener dos hijos con el mismo nombre)
3ª Actividades (este es el problema) Cada hijo puede estar apuntado a varias actividades.
La estructura del formulario es:
Padres ->subformulario hijos->subformulario actividades
En un principio creé un código de control que llamé cod_control:
- Al cambiar el nombre de un niño: cod_control=nif+nombre_niño
Y relacionaba la base dos con la 3 de esta forma, ambas con un cod_control. Funcionaba.
El problema es que se cambie el NIF del padre, no me actualizaba el cod_control de los subformularios. Poniendo en un afterupdate en el campo NIF de padres que me actualizase los campos cod_control solo conseguí actualizar el del subformulario hijos, pero no el de actividades.
Así que eliminé el cod_control, añadí el campo nif también a las actividades y cree una relación HijosNIF-> ActividadesNIF e HijosNombre->actividadesNombre
Ahora si cambio el nif en Padres me lo cambia en Hijos (si entro en el formulario) pero pierdo la conexión con Actividades.
Y ahí me pierdo, creo que lo estoy liando más de lo que es, a ver si me puedes echar una mano.
En Padres NIF -> indexado sin duplicados
En hijos y actividades nif->indexado con duplicados y nombre_hijo-> indexado con duplicados y me crea una relación indeterminada.
El problema es que metan mal un nif, me lo tengan que corregir y desaparezcan los hijos y las actividades.
Te pongo una imagen de como tengo ahora las relaciones y los formularios:
http://s299204700.mialojamiento.es/tablas.jpg
http://s299204700.mialojamiento.es/form.jpg

1 respuesta

Respuesta
1
Sin entrar en detalles (voy un pelín liado) yo no enfocaría el tema de los registros cuya clave es el NIF. Yo utilizaría el ID de las tablas (automunerico) para relacionarlas entre ellos. El NIF, como parece que estas viendo, puede cambiar y ello conlleva problemas (como estas sufriendo).
Si utilizas el ID para relacionar las tablas (y el usuario ni se entera de su existencia), puedes cambiar cualquier otro campo sin problemas. Si el problema es que te puedan duplicar un NIF... pues metelo como Indexado Sin duplicados y listo.
En las tablas relacionadas con la 'principal', basta con guardar el ID de la principal así, cualquier cambio de datos del principal queda automáticamente reflejado en las relacionadas. La única excepción a eso seria en el caso de que se emitieran facturas; entonces si que debe copiarse el NIF (y otros campos) del momento en que se hace la factura.
No se si te he aclarado algo o, por el contrario, te he dejado más confuso.
http://www.aesoft-databases-.com
Me has aclarado algo, liarme para nada. Seguía con el problema en la de actividades y si se cambiaba el nombre del niño, pero eliminado el NIF lo he dejado con un id2 y va bien todo:
http://s299204700.mialojamiento.es/tablas.jpg

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas