Agregar campos de texto en un formulario en ejecución.

Un gusto saludarlos.

Tengo un formulario llamado estudiante que viene de una tabla llamada estudiante.

Cada estudiante ve un número diferente de asignaturas y asignaturas diferentes.

El formulario arranca con los siguientes Campos número de cédula del estudiante

Nombre completo

Dirección

Teléfono

Asignatura

Lo que necesitaría, es agregar por medio de un botón, cuántos Campos de asignatura se necesiten para cada estudiante, es decir, si un estudiante solo va a haber una materia que solo esté presente en el formulario un solo campo de asignatura, pero si por el contrario va a ver 5 asignaturas que los pueda añadir en plena ejecución del formulario por medio de un botón.

2 Respuestas

Respuesta

La Solución Recomendada: Es crear un Subformulario

La mejor práctica en Access para tu escenario (un estudiante con múltiples asignaturas) es utilizar un subformulario. Esto permite una gestión de datos mucho más limpia, ya que los controles son intrínsecamente ligados a la tabla de asignaturas y la interfaz se maneja sola.

Estructura de Tablas:
Deberías tener al menos dos tablas:

Estudiante (→ tblEstudiante):

ID_Estudiante (Clave Principal)

Cedula

NombreCompleto

Direccion

Telefono

AsignaturaEstudiante (→ tblAsignaturaEstudiante):

ID_AsignaturaEstudiante (Clave Principal)

ID_Estudiante (Clave Foránea → Relación con tblEstudiante)

NombreAsignatura

... (Otros campos de la asignatura)

Implementación del Subformulario:

Crea un nuevo formulario (frmAsignaturas) basado en la tabla tblAsignaturaEstudiante.

Colócalo dentro del formulario principal (frmEstudiante).

Establece las propiedades de vinculación del subformulario:

Vínculo maestro: ID_Estudiante (del formulario principal).

Vínculo secundario: ID_Estudiante (del subformulario).

Con esto, cada vez que navegues a un estudiante, el subformulario automáticamente mostrará todas sus asignaturas y permitirá agregar nuevas sin necesidad de código VBA para crear controles.

Respuesta
1

Normalmente el desglose de un conjunto se hace mediante una tabla subordinada (esto es: una tabla auxiliar).

Se crea un campo de relación en el registro del alumno (puede utilizarse el ID del mismo alumno) la condición es que ese campo pueda ser indexado como único en ese conjunto (por ello el ID_entificador del alumno es valido).

En la tabla auxiliar (la de materias) ha de haber un campo para el ID que la asocia con el alumno, cuando menos otro para el nombre (o identificador) de la materia y otros complementarios (por ejemplo: el nombre de enseñante ..).

La tabla con las materias debería indexarse por mas de un campo (como mínimo la materia y el alumno) para evitar que se duplicasen sus registros en el binomio Materia/Alumno.
(Una indexación es similar a crear un campo LLAVE sin las imposiciones y restricciones que tiene el ser LLAVE con multiples campos).

Se mostraría en el formulario de forma preferente como un subformulario continuo otra alternativa consiste en un cuadro de lista (visualiza mas datos que un combo).

Un caso similar se puede presentar si se desea llevar el control de las calificaciones y podría planificar si abarcara mas de un año lectivo a lo largo de la carrera del alumno (por ejemplo, añadir además de la materia habrá que añadir el año lectivo, campo que se añadiría a los antes indexados.

La idea es que cada dato que a su vez necesite un desglose, ese desglose requiere una tabla aparte.
La idea de crear campos en el mismo registro en tiempo de ejecución debería descartarse pues ello exigirá el modificar el diseño de la tabla en tiempo de ejecución (complicado con la tabla en uso).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas