Access - Crear formulario (basado en consulta de varias tablas) para añadir registros desde ahi

   
Vista:

Crear formulario (basado en consulta de varias tablas) para añadir registros desde ahi

Publicado por Alejandro alejandro.rf91@gmail.com (6 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.


FOTO1
FOTO2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Crear formulario (basado en consulta de varias tablas) para añadir registros desde ahi

Publicado por jose (741 intervenciones) el 21/02/2016 20:41:08
Hola Alejandro:

Los campos que tienes en el formulario de AFILIACION Y ROL , son de esas respectivas tablas , ya que esos datos (el nombre ) no estan en la tabla de investigadores y por lo tanto malamente se pueden modificar en esta tabla

en la tabla de investigadores solo puedes introducir el id de afiliacion y el id de rol y nunca su nombre que se encuentra en otra tabla

Una forma de solucionarlo es poner un combo box (cuadro combinado ) frente al dato de afiliacion y rol y seleccionar el elemento deseado y traspasarle al correspondiente campo de la tabla investigadores , pero pasar solo el id de cada uno de ellos



lo mismo sucedería con el GRUPO



jose manuel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Crear formulario (basado en consulta de varias tablas) para añadir registros desde ahi

Publicado por Alejandro (6 intervenciones) el 22/02/2016 08:59:46
Creo que te he entendido pero no estoy seguro...

Según me has dicho, si tengo un formulario basado en una consulta (suponte el caso de una consulta de dos tablas, tabla1 y tabla2), desde este formulario no podría agregar registros SOLO en la tabla1 si hay campos relacionados de la tabla 2 en el mismo formulario ¿Verdad?

Si por ejemplo en mi formulario agregara los campos ID de ROL, AFILIACION Y GRUPO (los 3 de la tabla INVESTIGADORES, no de sus respectivas tablas) y quitara del mismo formulario los campos de sus descripciones (que son básicamente los campos que acompañan al ID en las 3 tablas, roles, grupos_investigacion y grupos), a priori access si me añadiría un nuevo registro por que todos los campos que habría en dicho formulario pertenecen a la misma tabla. (Corregidme en cualquier momento si veis que estoy equivocado).

Por lo que, si todo lo que he supuesto es cierto, creo entender que tu idea sería que en el formulario creara por ejemplo para el campo ROL, un cuadro combinado que me permitiera elegir entre 1,2,3 y 4 y que al lado de dicho campo hubiera otro (supongo que otro cuadro combinado), que mostrara la descripción del rol elegido en función del número que elija en el cuadro combinado O VICEVERSA (es decir que yo seleccione un rol directamente en el formulario (en practicas, jefe de grupo, etc) y automáticamente se rellene el ID correspondiente (1, 2, 3 etc). ¿Es asi?

Si es la idea que tenías, me parece buena y bastante correcta, sin embargo me plantea una dudilla y es, que si access no se liará en el formulario si sigo poniendo las descripciones de rol, afiliacion y grupo, ya que aunque no tenga que poner nada en esos campos y se "autorellenen" cuando seleccione un número de sus ID (o al revés como he explicado antes), quizás access al tener en el formulario los 3 ID y las 3 descripciones de las tablas rol, afiliacion y grupos_investigación, siga intentando agregar a dichas tablas lo que meta en esos campos, devolviendome access el error de que ese registro crearia valores duplicados en la tabla ROLES, AFILIACION, etc).

Por cierto, dicha idea que me has planteado no sabría como hacerla , digamos que no se crear cuadros combinados que pudieran "autorrellenar" otro cuadro relacionado.

De todos modos voy a trastear con ello mientras espero más ayuda, a ver si puedo descubrir más cosas.
Espero no estar liándoos mucho con esto, es más sencillo de lo que parece lo que pasa es que explicarlo de esta manera es dificil, y entenderlo más aún.

Si descubriera alguna forma de hacerlo la dejaré aquí compartida
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Crear formulario (basado en consulta de varias tablas) para añadir registros desde ahi

Publicado por Alejandro (6 intervenciones) el 22/02/2016 13:45:09
Bueno compis ya he descubierto una manera de hacerlo con la idea que me dió Jose Manuel:

Todo parte del hecho de que queráis diseñar un formulario basado en una consulta de 2 o más tablas, y que sea necesario mostrar información en dicho formulario de todas ellas (o minimo 2), pero que a la hora de agregar registros DESDE ESE FORMULARIO, solo los agregue para la tabla que tú desees.

Por ejemplo en mi caso tenía que mostrar datos de los investigadores (ID, nombre, apellidos, dni, etc) pero también algunos datos en tablas relacionadas (como las descripciones de su rol, afiliacion, grupo, etc).

El primer paso es crear una consulta con TODA la información importante que desees mostrar y que además desees modificar desde el formulario, (en este caso meterías prácticamente todos los campos importantes de la tabla principal que en este caso es INVESTIGADORES, y además es la tabla en la que queremos añadir registros a dar al botón una vez diseñemos el formulario), además de añadir los campos de tablas relacionadas que interesen (en mi caso las 3 descripciones, la de rol, grupo y afiliacion), IMPORTANTE DECIR QUE ESTOY HABLANDO DE CAMPOS QUE NO SON CLAVES PRIMARIAS EN SUS TABLAS, ya que si lo fueran todo seria enormemente más fácil porque por ejemplo, si fuera así en este caso, directamente en un registro nuevo de investigadores me saldrían los roles disponibles (EN_PRACTICAS, JEFE DE GRUPO, etc) y no la opción de 1, 2, 3 o 4.

Una vez tengamos la consulta hecha, crearemos un formulario en base a esa consulta y empezaremos a agregar campos al formulario. Primero es mejor agregar todos los campos relativos a la tabla principal, (es decir nombre, apellidos, ID, dni, etc), y una vez tengamos todos los que nos interesen, empezamos a agregar los campos relacionados de otras tablas, os cuento mi método:

Si por ejemplo agregamos, en mi caso, afiliación (que si miráis la foto veréis que la tabla afiliación tiene 2 campos, ID_AFILIACIÓN, y AFILIACIÓN, hay que agregar (en agregar campos existentes) LA CLAVE PRIMARIA (ID_AFILIACIÓN) de la tabla principal del FORMULARIO (INVESTIGADORES), donde seguramente sea un desplegable si en la tabla de INVESTIGADORES hay un select en el campo afiliacion (1, 2, 3, 4).

Una vez tenemos esto tenemos la mitad hecha, disponemos en el formulario de un desplegable en el campo afiliación, PERO, como es la clave primaria es un desplegable con opciones 1, 2, 3 o 4 (muy poco intuitivo para el usuario), por lo que lo suyo es crear otro desplegable al lado donde estuviera la descripción de la afiliación que estés eligiendo.

En este caso ya no desde agregar campos existentes, sino en el panel de controles, agregamos un nuevo cuadro combinado cuyos valores van a ser las DESCRIPCIONES de la afiliacion (tabla AFILIACIONES campo AFILIACION). Una vez lo creamos solo hace falta hacer que sean dependientes un desplegable de otro, es decir, que si en el desplegable numérico (el de las claves principales) pones 1, automáticamente en el otro desplegable aparezca FIBPH (que es la descripción de la clave primaria "1" en la tabla afiliaciones), y esto simplemente se hace seleccionando en vista diseño el ORIGEN del segundo desplegable (el de la descripción) y poner el mismo origen que el desplegable de las claves primarias (en ambos casos deberá ser AFILIACION).

De esta manera habremos conseguido que en el formulario, en el campo afiliacion, salgan 2 desplegables, y si cambiamos uno, el otro automáticamente tomará el valor relacionado, o viceversa. Lo práctico sería ocultar el desplegable de las claves primarias (1,2,3,4) para que un usuario que quiera agregar nuevos registros, lo haga desde el desplegable de las descripciones (EN_PRACTICAS, JEFE DE GRUPO, etc) mientras access, "interna y ocultamente" lo asociará en el otro desplegable al número correspondiente, y todo esto agregando solo datos a la tabla investigadores.

Si algún usuario quiere hacer algo parecido a lo que he hecho yo y no le ha quedado claro por lo que sea, podéis comentarlo en este hilo.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Crear formulario (basado en consulta de varias tablas) para añadir registros desde ahi

Publicado por Enrique Heliodoro (1663 intervenciones) el 22/02/2016 16:31:07
Creo que si investigas un poco (muy muy poco) sobre los desplegables (se les conoce como 'COMBOS') apreciarías que pueden tener mas de una columna, y que las columnas se pueden mostrar y ocultar a voluntad (del programador) y que se puede hacer referencia a una columna cualquiera (visible o invisible) ...

Es una de sus virtudes, virtud que tu no utilizas y por ello te complicas sincronizando dos para hacer lo mismo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Crear formulario (basado en consulta de varias tablas) para añadir registros desde ahi

Publicado por jose (741 intervenciones) el 22/02/2016 16:39:50
Felicidades Alejandro , por un lado, por solucionar el problema que tenias, y segundo por detallar con tanto detalle una solucion que a mucha gente le puede interesar .

Es cierto que cuando se ponen ejemplos de formularios , siempre se hacen de una sola tabla vinculada a un formulario , pero hay muchas más variantes, como esta que tu tenias y que tan bien has solucionado.


Jose manuel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar