¿Cómo hacer consultas a la base de datos mediante formularios en Microsoft Acces?

Tengo una duda para realizar una pequeña base de datos, tratare de explicar lo que quiero, deseo hacer una base donde relacione la información de los empleados, es decir, identificación, nombre apellidos, etc. Hasta allí todo va bien porque solo es un tabal un formulario, pero mi problema nace cuando ya quiero insertar información que puede ir creciendo, ejemplo, si veo la primer tabla y el primer formulario en el campo de nombre por ejemplo nunca se agregara más información, pero si necesito agregar un campo como vacaciones, ese si aumenta debido a que anualmente las vacaciones están corriendo en tones van aumentando, pero dentro del mismo registro o empleado, es decir que la información de las vacaciones lleva los registros desde, hasta, fecha etc, la idea es que pueda agregar cuantas veces quiera esas vacaciones pero que pertenezcan al mismo empleado las preguntas son,
¿Cómo puedo hacer para que en el mismo formulario (tipo subformulario) relacione la información de todas las vacaciones que desee pero que están pertenezcan al empleado X?
Si es mejor trabajarlo en otra tabla, como sería la relación o que debería hacer
Se aclara que la información de las vacaciones se debe agregar cuantas veces se desee para llevar un historial, pero que pertenezcan a la misma persona

1 respuesta

Respuesta
1
Para poder ampliar la información yo aconsejo siempre pensar en términos de multiplicidad. Me explico: supón que partes de una tabla de empleados, y quieres añadir más datos relativos a los mismos, por ejemplo número de hijos. Esa propiedad es intrínseca al concepto empleado, y basta con dar UN dato por empleado, por tanto, puede ser un campo de la misma tabla.
Pero si lo que quisieras es anotar, por ejemplo, los nombres de los hijos, por ejemplo, ya sería más complejo, porque no todo el mundo tiene el mismo número de hijos, y por tanto no puedes prever cuantos hijos vas a entrar. Una solución es poner 10 campos, pero, tienes dos problemas: ¿Qué pasa si la mayoría de tus empleados tiene un máximo de 2 hijos?, desaprovechas espacio, pero, ¿qué pasa si algún empleado cree que es un conejo y empieza a querer tener una docena de hijos?, pues que ya no te sirve el modelo proyectado.
¿Qué hacer?. Lo normal en estos casos es crear una tabla aparte que contenga los datos que quieras guardar de los hijos: fecha de nacimiento, nombre, lugar de nacimiento...
Lo imprescindible:
- La tabla de empleados debe tener un campo que sea PrimaryKey (PORQUE), te aconsejo que uses Autonuméricos, es lo más práctico
- La tabla de hijos debe tener, aparte del PORQUE, un campo que sea de tipo Numérico Entero Largo, y que debe coincidir con el del padre
Para que la información sea tratada de manera más segura por parte de Access, antes de entrar datos en la tabla de hijos es recomendable crear una relación. Se crea gráficamente, y se establece entre el campo PORQUE de la tabla de padres y el campo que hace referencia a los padres en la tabla de hijos (ojo, nunca con el campo PORQUE de la tabla de hijos)
Bueno, te he pegado un rollazo enorme, leételo con calma, haz pruebas, y cuando no puedas hacer más, ¿si te lías, pregunta, ok?
Siguiendo tu ejemplo, que dato podría tomar en la tabla del padre para relacionarla con el de hijos, como crearía la relación, es decir el tipo, la verdad lo intente pero no me funciona, por favor podrías aclararme más, je je como dicen "con plastilina"..
Gracias por tu tiempo y espero me ayudes de nuevo...
Si quieres podemos ver una base de prueba, si es necesario
saludos y gracias
Después de intentar lo que me explicaste, he conseguido hacerlo, pero ahora la pregunta es si son más de dos tablas similares a los de los hijos, que se puede hacer, como se deben relacionar...
- Indiscutiblemente el campo de la tabla padre a usar como relación es un identificador de la tabla padre. Un identificador tiene que ser un valor (numérico o no) que sea único para cada fila de la tabla de datos. Para ello tienes que hacer que ese campo sea Clave Principal en el diseño de la tabla. Lo mejor, para no liarte, es que el campo sea autonumérico, porque es Access quien crea el código cada vez, y por tanto de despreocupas, y porque seguro que no estará repetido, además de que lo más normal es que te dé igual el código, lo que quieres es que funcione. Es diferente de, por ejemplo, un plan de Cuentas en una contabilidad, en donde necesitas definir hasta los códigos, porque forman parte de una familia, y por ejemplo la cuenta 10110 es una parte de la cuenta 10
- Para crear las relaciones hay que crear antes las tablas. Ten en cuenta que para poder hacer la relación necesitas que en la tabla padre haya un campo que sea clave principal, y en la tabla hija necesitas un campo que tenga el mismo tipo de dato y tamaño que tiene el campo clave de la tabla principal. Es decir, si usas un autonumérico, Access lo crea en un campo de tipo numérico, formato Entero largo. De ese modo, tienes que irte a la tabla de hijos y crear un campo, por ejemplo, idPadre, que sea de tipo numérico, Entero largo. OJO! En ningún caso autonumérico, sino numérico. Lo que harás con la relación es otorgar paternidad a los padres sobre sus hijos. Un ejemplo:
Tabla de Proveedores. Campos: idProveedor (autonumérico, PORQUE), NombreProveedor (texto, 50)
Tabla de Suministros. Campos: idSuministro (autonumérico, PORQUE), NombreSuminstro (texto, 50), idProveedor (Numérico, entero largo)
Una vez creadas las tablas, en el menú selecciona Herramientas/Relaciones.
Access presentará la lista de tablas definidas. Marcaríamos Proveedores y Suministros, y Aceptar. Las tablas aparecen dibujadas en pantalla. Si los PORQUE están bien definidos aparecerán en Negrita. Si no es así, corrígelo.
Para establecer una relación hay que marcar idProveedor en la tabla Proveedores y arrastrarlo hasta idProveedor en la tabla Suministros y soltar el ratón.
Access preguntará si la relación es de Integridad referencial (IR). Marcaremos que sí, y marcaremos también Actualización en Cascada y Eliminación en Cascada.
¿Qué significa esto?. La IR es un mecanismo que permite que sea Access quien se preocupe de hacer ciertas comprobaciones. Básicamente, que no podamos decir que algún suministro lo ha proporcionado un proveedor que no existe.
La Actualización sirve para que, en caso de modificar el contenido del campo idProveedor de la tabla Proveedores, Access lo modifique en la tabla Suministros, en todos los registros relacionados.
La Eliminación en cascada elimina los suministros cuando se elimina su suministrador

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas