Ver Mensaje Individual
  #7  
Antiguo 04-11-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita