Creación de base de datos

He empezado a trabajar en un colegio y lo primero que me han pedido es crear una base de datos con todos las actividades que imparte el colegio (residencia, autobús, piscina, comedor,...) y que se pagan mensualmente a través de recibo bancario. Lógicamente no todos los alumnos tienen las mismas actividades.

Tienen creada una base de datos con los datos de cada alumno, dirección, nombres padres, por lo que me serviría el campo "apellidos nombre" de ésa tabla.

Ellos me explicaron que lo que querían era como una hoja de excel pero en access, me explico, en la columna los meses de enero a diciembre, en la filas las opciones (residencia, autobús, piscina...) y sumatorios de cantidad al final de cada mes y al final de cada opción, con un sumatorio final, todo esto por alumno. En excel sería muy fácil pero lo quieren en ACCESS...

Los avances que he hecho y donde estoy muy enganchado es en que quiero introducir varios datos a la vez y no se como, por ejemplo en el mes de enero todos los de residencia, que pagan todos 100 € y donde lo que quiero es marcar que alumnos son.

Llevo un tiempo dando vueltas con tablas relacionadas, una única tabla, pero estoy enganchado, ¿me podéis ayudar?. Por cierto trabajo en ACCESS 2003 (a la última)

1 Respuesta

Respuesta
1

Primero, no creo que el campo Nombre y apellido te sirva, pueden coincidir... ¿Jose Rodriguez...? Puede haber más de uno. Creo que sería mejor un numero identificativo, DNI, Matricula... algo que identifique al alumno inequívocamente.

Después, lo que yo plantearía serian 2 tablas:

Alumnos (Matricula, Nombre ...)

Actividades (Matricula, Residencia, Autobús...)

En esta 2ª tabla los campos Residencia, Autobús... los definiría como Sí/No

Marcando los que tienen esa actividad, de este modo cuando quiera, por ejemplo, saber los alumnos que tienen la actividad Autobús, con hacer una consulta poniendo la condición:

Autobús=True

Sería suficiente.

Hola Ángeles:

Lo primero muchas gracias por la respuesta y tan rápida.

Como bien menciona al principio, lo mejor es crear un número único, y ése ya le tienen. Es el número de matrícula. Perdón por no haberlo mencionado en el primer mensaje.

Después las dos tablas que menciona ya las tengo con la misma estructura, pero no se como relacionarlas. También sé hacer la consulta para que me saque los de residencia, piscina,...

En los formularios hago llamadas a las consultas creadas de los alumnos que tiene residencia y que me pegunte qué mes y qué cantidad quiero poner, pero la consulta no se me incorpora a la tabla y no se si se puede hacer, ya que sino tendría que meter registro a registro y lo que pretendo es meter un mes entero de golpe, seleccionado tan solo los alumnos que quiero dependiendo de la opción.

No se si me explico lo suficiente o estoy muy perdido, de todas formas muchas gracias de nuevo.

Las 2 tablas las tienes que relacionar por la matricula.

Respecto a que la consulta no se incorpora a la tabla... ¿a qué tabla...?

Si lo que quieres es saber que tiene que pagar cada alumno en un mes, yo haría otra tabla:

Pagos ---> Campos: Matricula, Año, Mes, Concepto y Cantidad.

En esta tabla, los campos residencia, autobús... serían numéricos y ahí pondría la cantidad a pagar cada alumno por cada concepto en cada mes.

En el formulario tendría 3 cuadros combinados: selaño, selMes y selConcepto para elegir el año, mes y concepto respectivo, después tendría un cuadro de texto para digitar la cantidad, lo llamare txtCantidad.

Una vez elegido el año el mes y el concepto metería la cantidad y mediante un botón insertaría estos datos en la tabla pagos.

Según el concepto que selecciones afectaría a unos u otros alumnos, para ello pondremos un if ........then ............ end if

Por ejemplo, seleccionamos el concepto autobús, en el código del botón sería:

If form!selConcepto="autobús" then

dim db as database

dim rs as recordset

set db=currentdb

set rs=db.openrecordset("Select matricula from actividades where autobús=true")

Do while not rs.eof

DoCmd.RunSql "Insert Into Pagos (Matricula, Año, Mes, Concepto, Cantidad) Values ('" & rs!Matricula & "', '" & form!selAño.Value & "', '" & form!selMes.Value & "', '" & form!selConcepto.Value & "', " & form!txtCantidad.Value & ")

rs.MoveNext

Loop

End If

Es decir, para cada concepto crearía un recordset con la condición de que el concepto sea verdadero, para sacar TODAS las matrículas que verifican la condición.

Recorrería el recordset e insertaría los datos en la tabla Pagos

Me cuentas.

Hola Ángeles:

Disculpa por la tardanza en contestar, pero durante los últimos días he tenido problemas técnicos. Varias cosas:

- cuando dices relacionar las dos tablas por la matrícula ¿es del campo matrícula a campo matrícula? ¿no se relaciona nada con el campo IdMATRICULA?

- cuando decía hacer una consulta e incorporarlo a la tabla me refería a las dos tablas que tengo creadas, para que se quede registrado, y no que al hacer una consulta cuando la cierres se pierden también los datos de la consulta.

- lo que pretendo hacer es un formulario donde puede seleccionar los alumnos que yo quiera y que ésa selección quede reflejada en las tablas; es decir, en vez de dar de alta un registro cada vez, que en una sola operación pueda dar de alta varios registros.

-respecto a la propuesta nueva que me hace, lo he hecho tal cual me indica, pero cuando me dice crear un botón para meterlo en la tabla pagos no sé como hacerlo, he creado un botón de comando pero no veo la opción insertar en tabla o algo así, recuerde que trabajo en ACCESS 2003. Del mismo modo tampoco sé donde insertar el ¿visual basic? if....then....end if. Perdón pero soy poco más que una usuario básico de ACCESS, por lo que si pudiera indicarme como a los niños....

Perdón por toda la parrafada y muchas gracias por contestarme.

Cuando creas el botón, lo seleccionas y con botón derecho vas a Propiedades ---> En la acción Al hacer clic ---> picas en la flecha de la derecha y eliges ---> Procedimiento de Evento. Después picas en el cuadrado de la derecha, el de los ... para abrir el generador de código, ahí es dónde tienes que escribir el código.

Con esto, lo que haces es que al ejecutar la acción de clic en el botón se ejecute el código que has escrito.

Hola Ángeles:

He hecho paso por paso lo que me indica para agregar el código al botón, lo he repasado para ver que los campos se llamen igual, pero siempre me da error. He intentado insertar unas imágenes en la aclaración pero parece que no se puede. El mensaje de error dice algo así como:

La expresión "al hacer clic" que introdujo como valor de la propiedad de evento produjo un error: el procedimiento externo no es válido.

Saludos

¿Me puedes mandar la BD, en access 2003 que es el único que tengo...? La echo un vistazo y hablamos.

Muchas gracias por la ayuda prestada, ya he dejado de trabajar en el colegio y dejé la base de datos a medias, no tuve más tiempo, pero me sirvieron de bastante sus esugerencias.

Lo dicho, muchas gracias y ánimo con ésta labor tan desinteresada.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas