
Crear formulario (basado en consulta de varias tablas) para añadir registros desde ahi
Publicado por Alejandro (9 intervenciones) el 21/02/2016 19:46:31
Hola y buenas tardes a todos. Primero quería presentarme pues soy nuevo en el foro; simplemente decir que me parece una web muy práctica y que agradezco de antemano toda ayuda que podáis ofrecerme.
Estoy trabajando con access para el diseño de una base de datos en mi trabajo. Esta base de datos consiste en tablas de INVESTIGADORES (con id, nombre, apellido, grupo, afiliación, (etc)), CONVOCATORIAS (con id, programa, organismo, fecha_inicio, fecha_fin, (etc)), SOLICITUDES (id, id_convocatoria, id_empleado, fecha_solicitud), GRUPOS_INVESTIGACIÓN (id_grupo, descripción_grupo), AFILIACIONES y algunas tablas más de menos importancia.
En la FOTO1 os he mandado el diagrama de la base de datos, y ejemplos de registros de tablas INVESTIGADORES, GRUPOS_INVESTIGACION , AFILIACIONES, y ROLES.
Como podéis ver, se puede deducir que los investigadores presentan solicitudes de convocatorias y esto queda relacionado en la tabla SOLICITUDES que relaciono a un investigador con una convocatoria mediante sus ID.
Hasta aquí todo bien.
El único dato que tenéis que fijaros bien antes de exponer mi duda es el siguiente. Por ejemplo en la tabla de investigadores fijaros que los campos ROL, o AFILIACIÓN son numéricos, lo que quiere decir que si por ejemplo un empleado es ROL 3, significa que es jefe de grupo, u otro empleado que es AFILIACIÓN 2, es afiliación HUPHM, ya que están relacionados esos campos con SUS CLAVES PRIMARIAS DE SUS TABLAS PRINCIPALES. (Yo en mi empresa sugerí no hacer tablas de los campos ROL o AFILIACION y directamente en la tabla de investigadores elegir de un desplegable con las opciones, pero lo quieren de la otra forma).
El problema viene cuando hago un formulario para mostrarme los datos de los investigadores, ya que no puedo hacer un formulario basado solo en la tabla INVESTIGADORES pues los campos de GRUPO, AFILIACIÓN o ROL van a ser confusos para el usuario ya que van a mostrar solo el id, no la descripción ni del rol, ni de la afiliación ni del grupo.
Por todo lo que he ido trabajando en access deducí que lo mejor sería crear una consulta en la que aparte de los datos que quisiera mostrar de la tabla INVESTIGADORES, pudiera coger los campos de descripción tanto de rol, afiliación y grupo de sus respectivas tablas, para que no salga un número sino directamente la descripción en el formulario. Esto elementalmente me funcionó y en la FOTO2 muestro mi formulario, donde podéis ver que en GRUPO, AFILIACIÓN y ROL salen las descripciones y no números de sus ID.
La duda que no me esta dejando dormir ya es la siguiente. Partiendo del hecho de que tengo un formulario basado en una consulta de campos vitales de la tabla INVESTIGADORES, y luego 3 campos de otras 3 tablas relacionadas, AFILIACIÓN de la tabla AFILIACIONES (no su id), ROL de la tabla ROLES (no su id) y DESCRIPCIÓN_GRUPO de la tabla GRUPOS, el problema viene cuando intento agregar un nuevo registro en el formulario, ya que cuando pongo el IDENTIFICADOR, NOMBRE, APELLIDOS, TLF TRABAJO, todo va bien (ya que es de la tabla INVESTIGADORES que es de la que me interesa agregar registros), pero cuando elijo una afiliación, un grupo y un rol (deben existir todos en sus respectivas tablas), access ME INTENTA AGREGAR UN NUEVO REGISTRO EN LA TABLA AFILIACIONES para la afiliación que meto, igual que me intenta agregar el rol que ponga en el formulario a la tabla roles, y con grupo igual.
Es decir, al tener un formulario basado en consulta de 4 tablas (INVESTIGADORES, ROLES, AFILIACIONES Y GRUPOS_INVESTIGACIÓN), cuando le doy al botón de agregar nuevo registro, los datos relacionados a la tabla INVESTIGADORES me los intenta agregar en un nuevo registro en la tabla INVESTIGADORES, mientras que el campo de ROL me lo intenta agregar a la tabla ROLES, el campo AFILIACION me lo intenta agregar en un nuevo registro en AFILIACIONES, y lo propio con los GRUPOS. Entonces access me devuelve un error porque no he especificado clave primaria en ninguna de las tablas de GRUPOS, ROLES Y AFILIACIONES (tiene sentido ya que access esta agregando campos que no son primarios a dichas tablas, solo las descripciones).
Lo que necesito es que access no haga eso, sino que aunque haya campos relacionados de otras tablas, yo simplemente los rellene y si por ejemplo en un investigador le digo en ROL que está de prácticas (que es el id_rol 1), no me cree un nuevo registro en ROLES y me intente agregar EN_PRACTICAS, sino que access sepa que estoy especificando su rol pero que quiero que quede reflejado en ninguna tabla que no sea INVESTIGADORES, donde en ROL deberá aparecer un 1, y así con las otras 2 tablas, de manera que si también pongo por ejemplo en el formulario AFILIACION = UAM y GRUPO = HEPATOLOGIA, solo se cree el registro del investigador EN SU TABLA y que en su campo AFILIACION ponga 4 y en GRUPO ponga BCDRI1.
Es un poco lioso al tener que explicarlo asi en texto, espero que os haya quedado clara mi idea y si necesitais cualquier otra imagen ilustrativa o alguna aclaración estaré atento. Tengo estudios de informática por lo que también quiero ayudar siempre que pueda en este foro y siempre que tenga dudas intentare ilustrarlas lo mejor posible y además que sean dudas constructivas.
Gracias de antemano y espero vuestras respuestas.


Estoy trabajando con access para el diseño de una base de datos en mi trabajo. Esta base de datos consiste en tablas de INVESTIGADORES (con id, nombre, apellido, grupo, afiliación, (etc)), CONVOCATORIAS (con id, programa, organismo, fecha_inicio, fecha_fin, (etc)), SOLICITUDES (id, id_convocatoria, id_empleado, fecha_solicitud), GRUPOS_INVESTIGACIÓN (id_grupo, descripción_grupo), AFILIACIONES y algunas tablas más de menos importancia.
En la FOTO1 os he mandado el diagrama de la base de datos, y ejemplos de registros de tablas INVESTIGADORES, GRUPOS_INVESTIGACION , AFILIACIONES, y ROLES.
Como podéis ver, se puede deducir que los investigadores presentan solicitudes de convocatorias y esto queda relacionado en la tabla SOLICITUDES que relaciono a un investigador con una convocatoria mediante sus ID.
Hasta aquí todo bien.
El único dato que tenéis que fijaros bien antes de exponer mi duda es el siguiente. Por ejemplo en la tabla de investigadores fijaros que los campos ROL, o AFILIACIÓN son numéricos, lo que quiere decir que si por ejemplo un empleado es ROL 3, significa que es jefe de grupo, u otro empleado que es AFILIACIÓN 2, es afiliación HUPHM, ya que están relacionados esos campos con SUS CLAVES PRIMARIAS DE SUS TABLAS PRINCIPALES. (Yo en mi empresa sugerí no hacer tablas de los campos ROL o AFILIACION y directamente en la tabla de investigadores elegir de un desplegable con las opciones, pero lo quieren de la otra forma).
El problema viene cuando hago un formulario para mostrarme los datos de los investigadores, ya que no puedo hacer un formulario basado solo en la tabla INVESTIGADORES pues los campos de GRUPO, AFILIACIÓN o ROL van a ser confusos para el usuario ya que van a mostrar solo el id, no la descripción ni del rol, ni de la afiliación ni del grupo.
Por todo lo que he ido trabajando en access deducí que lo mejor sería crear una consulta en la que aparte de los datos que quisiera mostrar de la tabla INVESTIGADORES, pudiera coger los campos de descripción tanto de rol, afiliación y grupo de sus respectivas tablas, para que no salga un número sino directamente la descripción en el formulario. Esto elementalmente me funcionó y en la FOTO2 muestro mi formulario, donde podéis ver que en GRUPO, AFILIACIÓN y ROL salen las descripciones y no números de sus ID.
La duda que no me esta dejando dormir ya es la siguiente. Partiendo del hecho de que tengo un formulario basado en una consulta de campos vitales de la tabla INVESTIGADORES, y luego 3 campos de otras 3 tablas relacionadas, AFILIACIÓN de la tabla AFILIACIONES (no su id), ROL de la tabla ROLES (no su id) y DESCRIPCIÓN_GRUPO de la tabla GRUPOS, el problema viene cuando intento agregar un nuevo registro en el formulario, ya que cuando pongo el IDENTIFICADOR, NOMBRE, APELLIDOS, TLF TRABAJO, todo va bien (ya que es de la tabla INVESTIGADORES que es de la que me interesa agregar registros), pero cuando elijo una afiliación, un grupo y un rol (deben existir todos en sus respectivas tablas), access ME INTENTA AGREGAR UN NUEVO REGISTRO EN LA TABLA AFILIACIONES para la afiliación que meto, igual que me intenta agregar el rol que ponga en el formulario a la tabla roles, y con grupo igual.
Es decir, al tener un formulario basado en consulta de 4 tablas (INVESTIGADORES, ROLES, AFILIACIONES Y GRUPOS_INVESTIGACIÓN), cuando le doy al botón de agregar nuevo registro, los datos relacionados a la tabla INVESTIGADORES me los intenta agregar en un nuevo registro en la tabla INVESTIGADORES, mientras que el campo de ROL me lo intenta agregar a la tabla ROLES, el campo AFILIACION me lo intenta agregar en un nuevo registro en AFILIACIONES, y lo propio con los GRUPOS. Entonces access me devuelve un error porque no he especificado clave primaria en ninguna de las tablas de GRUPOS, ROLES Y AFILIACIONES (tiene sentido ya que access esta agregando campos que no son primarios a dichas tablas, solo las descripciones).
Lo que necesito es que access no haga eso, sino que aunque haya campos relacionados de otras tablas, yo simplemente los rellene y si por ejemplo en un investigador le digo en ROL que está de prácticas (que es el id_rol 1), no me cree un nuevo registro en ROLES y me intente agregar EN_PRACTICAS, sino que access sepa que estoy especificando su rol pero que quiero que quede reflejado en ninguna tabla que no sea INVESTIGADORES, donde en ROL deberá aparecer un 1, y así con las otras 2 tablas, de manera que si también pongo por ejemplo en el formulario AFILIACION = UAM y GRUPO = HEPATOLOGIA, solo se cree el registro del investigador EN SU TABLA y que en su campo AFILIACION ponga 4 y en GRUPO ponga BCDRI1.
Es un poco lioso al tener que explicarlo asi en texto, espero que os haya quedado clara mi idea y si necesitais cualquier otra imagen ilustrativa o alguna aclaración estaré atento. Tengo estudios de informática por lo que también quiero ayudar siempre que pueda en este foro y siempre que tenga dudas intentare ilustrarlas lo mejor posible y además que sean dudas constructivas.
Gracias de antemano y espero vuestras respuestas.


Valora esta pregunta


0