Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda para control de asistencias en programa de preceptoria (https://www.clubdelphi.com/foros/showthread.php?t=76960)

juliannemiro 08-12-2011 17:20:08

Ayuda para control de asistencias en programa de preceptoria
 
Hola a Todos!
Es la primera vez que escribo, asique tenganme un poco de paciencia :)

Les cuento. Estoy armando preparando un trabajo para la facultad en el que tengo que tomar la asistencia DIARIA a los chicos de un colegio.

Tengo que trabajar con la tabla ALUMNOS (toda la informacion del alumno) y la tabla ASISTENCIAS (donde esta id_alumno, fecha, tipo_asistencia que puede ser P: presente, A: ausente, T: tarde).

Mi idea es poner una DBGrid que levante todos los alumnos. Pero lo que no se es como agregar a la derecha de cada alumno una columna por día en el que yo pueda asignarle el tipo de asistencia correspondiente. Digamos, simular una planilla donde se llevan las asistencias.

Como me suguieren hacerlo?? Hay otra forma mejor de hacerlo que no sea con DBGrid??

Desde ya, gracias por su tiempo.

Caral 08-12-2011 19:26:32

Hola
Que base da datos vas a usar ?.
Saludos

juliannemiro 08-12-2011 20:47:27

Disculpas por no aclarar, trabajo con SQL.

TiammatMX 08-12-2011 20:53:00

Cita:

Empezado por juliannemiro (Mensaje 420775)
Disculpas por no aclarar, trabajo con SQL.

Quiero asumir que hablas de Microsoft SQL Server..., ¿cuál versión? ¿Con qué trabajarás, ADO o ClientDataset?

Con tan pocos datos que proporcionas, la calidad de la ayuda que proporcionemos se verá afectada y mermada..., mientras más datos dispongamos, mejor será la ayuda que podamos brindarte.

Casimiro Notevi 08-12-2011 21:29:19

Cita:

Empezado por juliannemiro (Mensaje 420775)
Disculpas por no aclarar, trabajo con SQL.

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración.

juliannemiro 08-12-2011 22:06:10

Trabajo con SQL Server 2000 usando ADO.

Lo que yo necesito es elegir un curso, que muestre todos los alumnos. Y que me permita ir agregando por día una columna con la fecha del día, y que por cada alumno me deje ingresar la asistencia (P, A, T)

Las tablas sql con las que tengo que trabajar son las siguientes:

ALUMNOS_CURSOS contiene los datos de los alumnos que tiene cada curso (id_curso, id_alumno)
ASISTENCIAS CONTIENE el id_alumno, el id_asistencia, el id_asistencia_tipo y fecha.
ASISTENCIAS_TIPOS contiene el detalle de la asistencia (id_asistencia_tipo, la descripcion -osea Tarde, Presente, Ausetente- y cuanto el Valor de la falta. Por ejemplo Ausente equivale a 1 falta, tarde equivale a 1/2 falta.)

Diganme si van entendiendo, como verán no tengo muy claro como se tiene que hacer.

juliannemiro 08-12-2011 22:12:32

Cita:

Empezado por Casimiro Notevi (Mensaje 420778)
Bienvenido a clubdelphi, ¿ya leiste nuestra guia de estilo?, gracias por tu colaboración.

Lo acabo de leer y me di cuenta que me faltaron los signos de exclamación(!!) al final del título.

Gracias por la info.

Caral 08-12-2011 22:24:13

Hola
Entiendo bien lo que necesitas en cuanto al trabajo, pero no entiendo cual es el problema ?.
Que es lo que realmente necesitas, tienes algun codigo implementado o estas en el diseño de la tabla ?.
Saludos

juliannemiro 08-12-2011 22:35:17

Gracias por seguir conestando.

Las tablas ya estan hechas.
Lo que no se es como hacer para que en la dbgrid me parezcan los alumnos en la primer columna y a partir de la segunda columna en adelante me aparezcan las fechas para que yo vaya completando con P, A y T y a su vez actualizando en la base de datos con los valores que voy agregando.

El formato que quiero para mi dbgrid es este y no se como lograrlo.

Alumno |1/10|2/10|3/10|
Martin | P | P | A
Roberto| A | T | P

Caral 08-12-2011 22:40:10

Hola
Mas o menos capto, aunque no se de que van los numeros 1/10, 2/10, 3/10.
Otra cosa que no entiendo es como se genera la ausencia o falta, es total o por clase osea curso ?.
Saludos

TiammatMX 08-12-2011 22:50:03

Cita:

Empezado por juliannemiro (Mensaje 420781)
...Diganme si van entendiendo, como verán no tengo muy claro como se tiene que hacer.

Por eso, hay que poner atención en clase...

Simple, imagínate qué es lo que tú harías, trasládalo a un diagrama o a un esquema y listo, asunto iniciado.

juliannemiro 08-12-2011 22:51:23

1/10 sería la fecha. 1 de octubre. La fecha también debería darla de alta en mi programa.

La grilla muestra todos los alumnos de un Curso. Cada alumno tiene su presentismo.

Lo que busco es que se grabe la asistencia con los valores que yo completo en la dbgrid. Cada día tiene una asistencia por cada alumno del curso.

Caral 08-12-2011 22:54:54

Hola
Ya lo entiendo bien.
Como pretendes hacerlo no se puede con un dbgrid, para eso seria el stringrid ya que el dbgrid no muestra los datos como los quieres.
Saludos

juliannemiro 08-12-2011 23:15:46

Que mala noticia me has dado! Con una StrGrid ni siquiera se como asignarle los alumnos a la primera columna.
Tendré que buscar otra forma de realizarlo entonces.

igualmente gracias.

ecfisa 09-12-2011 00:05:53

Hola Julián.

Es claro que se trata de una simple relación Master/Detail.

El problema, según veo, es que deseas tener una columna por cada día en el DBGrid. Y como ya te ha dicho mi amigo Caral, no se puede lograr con una tabla que tenga la siguiente estructura:
Código SQL [-]
CREATE TABLE ASISTENCIAS(
  FECHA DATE NOT NULL,
  ASISTENCIA CHAR(1),
  ALUMNO_ID INTEGER NOT NULL
);

Una forma que se me ocurre podría funcionarte, aunque seguramente tengas que reformular muchas cosas, es declarar la tabla ASISTENCIAS de este modo:
Código SQL [-]
CREATE TABLE ASISTENCIAS (
    MES INTEGER NOT NULL,
    ALUMNO_ID INTEGER NOT NULL,
    D01 CHAR(1), D02 CHAR(1), D03 CHAR(1), D04 CHAR(1), D05 CHAR(1),
    ...
    D29 CHAR(1), D30 CHAR(1), D31 CHAR(1)
);
Donde MES corresponde al més que se trate, ALUMNO_ID referencia aL ID de ALUMNOS y D01-D31 corresponden a los días del mes donde se le asignará el tipo de asistencia ('A','P','T').
Una vez entablada la relación master/detail entre los DataSets que referencian a la tabla ALUMNOS y ASISTENCIAS, podrías por ejemplo usar un TDBLookupComboBox para seleccionar el alumno, un TSpinEdit para el mes y un TDBGrid para visualizar/modificar las asistencias. Como supongo que las asistencias serán tomádas durante un lápso (trimestre, semestre o año) tendrías que borrar el contenido de la tabla al finalizar el perído e iniciar uno nuevo.

No es ni por mucho una manera elegante ni eficiente, pero te permite tener en un TDBGrid los días del més como si se tratase de una planilla de asistencias.

Un saludo.

Caral 09-12-2011 00:28:34

Hola
Ademas de lo que dice mi maestro y amigo ecfisa se me ocurre que se podría hacer una tabla temporal en donde se coloque la informacion que se desee y luego presentarla en el dbgrid.
Aunque sigo insistiendo que es mas sencillo con un strgrig, puede ser mas trabajo de momento, pero el resultado sera mejor.
Si no sabes usar un dbgrid y tienes que aprender a usarlo que mas da aprender a usar un strgrid ?.
Saludos


La franja horaria es GMT +2. Ahora son las 08:36:22.

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