Cita:
vetustas comentó:
Tengo también una tabla de prácticas a la que también me gustaria separarlas por años (como hice con los alumnos) pero claro, no puedo usar la relación maestro/detalle porque las prácticas ya dependen de otra tabla que es empresas. Cómo lo puedo hacer?
|
Vamos a ver. No conozco la estructura de tus tablas pero supongamos que es algo así:
empresas = (id, otros campos)
practicas = (id, emp_id, año, otros campos)
de manera que empresas.id se relaciona con practicas.emp_id.
Lo que yo haría (y de hecho hago en un caso similar) es crear otra tabla auxiliar:
emp_años = (emp_id, año)
En lugar de usar empresas como tabla maestra de practicas usas emp_años:
practicas.master -> emp_años
practicas.masterfields -> 'emp_id;año'
La tabla practicas deberá tener un índice para el par de campos emp_id, año.
De esta forma, conforme te desplaces por la tabla emp_años, la tabla practicas reflejará únicamente los registros correspondientes a la empresa y al año identificados por (emp_id, año).
Ahora sólo tienes que ver cómo moverte por la tabla emp_años.
Yo usaría dos DBLooupComboBox enlazados a empresas y años:
cboEmpresas.ListSource -> dsEmpresas
cboEmpresas.ListField ->
campo que desees mostrar
cboEmpresas.KeyField -> id
cboAños.ListSource -> dsAños
cboAños.ListField -> 'año'
cboAños.KeyField -> 'año'
Asignas el mismo evento al OnChange de cboEmpresas y de cboAños para moverte de registro cuando cambie cualquiera de ambos:
tblEmp_Años.FindKey([cboEmpresas.KeyValue, cboAños.KeyValue])
y ¡listo!, tu rejilla asociada a practicas mostrará sólo las prácticas de la empresa y año seleccionados.
// Saludos