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.