none
Tabla o tablas de apertura de gestion RRS feed

  • Pregunta

  • Hola mis amigos como están, estoy con muchas dudas al respecto de lo siguiente, bueno estoy intentando hacer un aplicativo para controlar la gestión de un colegio

    ya tengo las tablas de registro de estudiante padres y demás, ahora viene la parte un poco mas difícil

    par mi como voy a hacer el control de gestión.

    por ejemplo, una gestión escolar debería estar comprendida de el año escolar y de los meses.

    ya cree dos tablas una llamada GestionEscolaranhios y la otra GestionEscolarMeses (Enero, Febrero,..........Diciembre)

    pero la gestión escolar no comienza en enero y tampoco termina en diciembre, y debo cada año crear una nueva gestión escolar, ahí me viene mi problema hice algo como esto, donde voy a seleccionar los meses de mi gestión. esta parte no se como encararla o crearla, ya que en algún momento tendré que mostrar una tabla pivot de esta manera

    -----------------------------------------------------------------------------------------------------------------------------------

    Estudiante                         | Febrero| Marzo | Abril | Mayo | Junio | Julio | .........| Diciembre        Total

    -----------------------------------------------------------------------------------------------------------------------------------

    Juan Perez                         | 500     | 300     | 500 | 200    |      ..............................                    1500

    por favor si me dan alguna idea de como crear estas tablas la verdad no se como crear esas tablas, 

    Gracias

    Roberto Melgar

     

    miércoles, 4 de julio de 2018 20:36

Respuestas

  • Hola Roberto:

    Si tu obtienes un registro de tu curso Matematicas 2017-2018, y la fecha es desde el 15 de marzo al 15 de octubre (manteniendo tu idea de tener checks para marcar), solo tienes que marcar los meses que transcurren en el tiempo de periodo. Si lo obtienes con una consulta, o lo tratas mediante el lenguaje

    CREATE TABLE curso
    (id             INT,
     denominacion   VARCHAR(50),
     fechainicio    DATETIME,
     fechafinal     DATETIME,
     cicloEscolar   INT,
     costeMatricula FLOAT,
     costeTotal     FLOAT
    );
    GO
    INSERT INTO curso
    (id,
     denominacion,
     fechainicio,
     fechafinal,
     cicloEscolar,
     costeMatricula,
     costeTotal
    )
    VALUES
    (1,
     'MATEMATICAS 2017-2018',
     '20170701',
     '20180401',
     1,
     150.5,
     2004.8
    ),
    (2,
     'MATEMATICAS 2018-2019',
     '20170601',
     '20180501',
     2,
     1500.5,
     2004.8
    ),
    (3,
     'LITERATURA 2017-2018',
     '20170901',
     '20180701',
     1,
     150.5,
     2004.8
    ),
    (4,
     'OTROS 2017-2018',
     '20171201',
     '20180401',
     1,
     150.5,
     2004.8
    );
    SELECT DATEDIFF(month, fechainicio, fechafinal) AS DIFMESES,
           MONTH(FECHAINICIO) AS MESINICIAL,
           DATENAME(MONTH, fechainicio) AS MESINICIAL,
           DATENAME(MONTH, fechafinal) AS MESFINAL
    FROM curso;
    

    Algo de este estilo....

    Como lo ves?

    jueves, 5 de julio de 2018 14:21

Todas las respuestas

  • Hola Roberto C. Melgar;

    ¿Y porqué no?

    créate table GestionEscolar 
    (
    id int primary key, 
    denominación varchar(50), 
    fechaInicio datetime, 
    fechaFin datetime
    );

    Dado que, tanto lo que presentas, como anualidad, como lo que presentas como meses, no dejan de ser partes de una fecha, y de las mismas se puede extraer en base a un único registro. Puedes cumplimentar la tabla con mas campos, tales como PERIODO VARCHAR(50) = '2017-2018', o cualquier otro atributo que le sea propio, como puede ser el coste.

    Esto simplifica bastante tu modelo de datos, y te será muy fácil consultarlo.

    El usuario estará matriculado en un curso, tabla matriculaCursosEstudiantes (tabla intermedia de varios a varios), donde los alumnos se matriculan, y luego los pagos, sobre estudiante, curso. En los pagos, vas insertando registros con la fecha y el periodo que están pagando, y lo que resta es calculado, sobre el coste, menos, lo que ya ha pagado...o algo del estilo.

    Un saludo

    jueves, 5 de julio de 2018 5:18
  • Perdona Roberto: Te he expuesto un modelo de gestión un poco al vuelo, porque el que has plasmado, no esta ni normalizado, y desde mi punto de vista, te va a costar gestionarlo.

    Un saludo

    jueves, 5 de julio de 2018 5:21
  • Perdona Javi : estoy leyendo para entender la idea

    y entiendo esto 

    denominacion      | Fecha Inicio | Fecha Fin|

    2017-2018          | 05/02/2018 | 20/11/2018 

    Ok lista mi tabla, periodo de la gestion_Escolar

    pero ahi como podria luego mostrar en un datagridview los meses  en la parte superior,lo que deseo mostrar, tendria lo que intento hacer es como una hoja tabulada de excel 

    gracias, de todas formas ya me voy dando cuenta de como ir encarandolo.

    un buen dia

    Roberto

    jueves, 5 de julio de 2018 13:09
  • Hola Roberto:

    Si tu obtienes un registro de tu curso Matematicas 2017-2018, y la fecha es desde el 15 de marzo al 15 de octubre (manteniendo tu idea de tener checks para marcar), solo tienes que marcar los meses que transcurren en el tiempo de periodo. Si lo obtienes con una consulta, o lo tratas mediante el lenguaje

    CREATE TABLE curso
    (id             INT,
     denominacion   VARCHAR(50),
     fechainicio    DATETIME,
     fechafinal     DATETIME,
     cicloEscolar   INT,
     costeMatricula FLOAT,
     costeTotal     FLOAT
    );
    GO
    INSERT INTO curso
    (id,
     denominacion,
     fechainicio,
     fechafinal,
     cicloEscolar,
     costeMatricula,
     costeTotal
    )
    VALUES
    (1,
     'MATEMATICAS 2017-2018',
     '20170701',
     '20180401',
     1,
     150.5,
     2004.8
    ),
    (2,
     'MATEMATICAS 2018-2019',
     '20170601',
     '20180501',
     2,
     1500.5,
     2004.8
    ),
    (3,
     'LITERATURA 2017-2018',
     '20170901',
     '20180701',
     1,
     150.5,
     2004.8
    ),
    (4,
     'OTROS 2017-2018',
     '20171201',
     '20180401',
     1,
     150.5,
     2004.8
    );
    SELECT DATEDIFF(month, fechainicio, fechafinal) AS DIFMESES,
           MONTH(FECHAINICIO) AS MESINICIAL,
           DATENAME(MONTH, fechainicio) AS MESINICIAL,
           DATENAME(MONTH, fechafinal) AS MESFINAL
    FROM curso;
    

    Algo de este estilo....

    Como lo ves?

    jueves, 5 de julio de 2018 14:21
  • que bien eso es lo que realmente estaba buscando hacer, y creo que ya tengo clara la figura muchas gracias estimado Javi

    iré avanzando.

    buenas tardes

    Roberto Melgar

    jueves, 5 de julio de 2018 18:48