Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-10-2014
jose.ignacio.ve jose.ignacio.ve is offline
Miembro
 
Registrado: sep 2012
Posts: 79
Poder: 12
jose.ignacio.ve Va por buen camino
Registro de asistencias

Tengo una duda, quisiera hacer un registro de asistencia para un alumno. Donde al buscar el alumno me aparece un stringgrid con 30 mas o menos celdas dependiendo el mes actual que representan los dias. Lo que yo quisiera hacer es que al hacer click en el dia de hoy registre la asistencia de ese alumno!. Pero no se como hacer la base de datos. Osea tengo la tabla alumnos.
¿tendria que crear una tabla asistencia? con 31 campos ya que no hay mes con mas dias? por ejemplo: ID_asistencia; ID_alumnos;d1,d2,d3,d4...,d31; donde los d son los dias..
o alguien que me tire una ayuda!!
Responder Con Cita
  #2  
Antiguo 08-10-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jose.ingnacio.ve.
Cita:
Empezado por jose.ignacio.ve Ver Mensaje
...
¿tendria que crear una tabla asistencia? con 31 campos ya que no hay mes con mas dias? por ejemplo: ID_asistencia; ID_alumnos;d1,d2,d3,d4...,d31; donde los d son los dias..
Si, podrías hacerlo de ese modo... Pero, si no deseas desperdiciar espacio dimensionando días por exceso, ignorar fines de semanas, feriados, etc., otra opción es armar tus tablas de forma similar a esta:
Código SQL [-]
/* TABLA ALUMNOS */
CREATE TABLE ALUMNOS (
    ID        INTEGER NOT NULL,
    NOMBRE    VARCHAR(15),
    APELLIDO  VARCHAR(15),
    NOMAPELL  COMPUTED BY (NOMBRE || ' ' || APELLIDO) 
    /* ,demás campos */
);
ALTER TABLE ALUMNOS ADD CONSTRAINT PK_ALUMNOS PRIMARY KEY (ID);


/* TABLA MESES */
CREATE TABLE MESES (
    ID         INTEGER NOT NULL,
    FECHA      DATE,
    ALUMNO_ID  INTEGER    
);
ALTER TABLE MESES ADD CONSTRAINT PK_MESES PRIMARY KEY (ID);
ALTER TABLE MESES ADD CONSTRAINT FK_MESES FOREIGN KEY (ALUMNO_ID)
  REFERENCES ALUMNOS (ID) ON DELETE CASCADE ON UPDATE CASCADE;


/* TABLA DIAS */
CREATE TABLE DIAS (
    ID        INTEGER NOT NULL,
    DIA       SMALLINT,
    PRESENTE  CHAR(1),
    MESES_ID  INTEGER
);
ALTER TABLE DIAS ADD CONSTRAINT PK_DIA CHECK(DIA > 0 AND DIA < 32);
ALTER TABLE DIAS ADD CONSTRAINT PK_PRESENTE CHECK(PRESENTE IN ('A', 'P')); /* 'A'usente / 'P'resente */
ALTER TABLE DIAS ADD CONSTRAINT PK_DIAS PRIMARY KEY (ID);
ALTER TABLE DIAS ADD CONSTRAINT FK_DIAS FOREIGN KEY (MESES_ID)
  REFERENCES MESES (ID) ON DELETE CASCADE ON UPDATE CASCADE;
Entonces para ver las asistencias de un alumno en determinado mes de determinado año la consulta sería:
Código SQL [-]
SELECT A.NOMAPELL, D.DIA,  D.PRESENTE /* , demás campos */
FROM ALUMNOS A
INNER JOIN MESES M ON M.ALUMNO_ID = A.ID
INNER JOIN DIAS D ON D.MESES_ID = M.ID
  AND A.ID = :ALUMNOID 
  AND EXTRACT (YEAR FROM M.FECHA)= :ANIO
  AND EXTRACT (MONTH FROM M.FECHA) = :MES
Si no deseas extraer año y día en las consultas, podes declarar dos columnas ANIO y MES de tipo entero en lugar de la columna FECHA (MESES). Depende de como prefieras organizar tu aplicación...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda para control de asistencias en programa de preceptoria juliannemiro Varios 15 09-12-2011 00:28:34
Programa de Asistencias de Empleados (1) Caral Varios 20 23-03-2008 21:09:04
Recorrer base de datos registro por registro Goyo SQL 3 06-09-2006 21:40:47
Comparar un registro de un edit con un registro de una tabla en una consulta Damian666 SQL 10 01-10-2005 00:43:20
¿Borrado masimo o registro a registro? CHiCoLiTa SQL 0 21-03-2005 16:14:39


La franja horaria es GMT +2. Ahora son las 01:13:46.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi