Volcar datos de un formulario a otro

Otra vez... Me voy a hacer asidua je je

Tengo un formulario y otro subformulario que están relacionados con el DNI. En la hoja de propiepades tengo que se vinculen tanto en datos principales como en datos secundarios el DNI.

Si soy sincera no sé la razón de por qué se hace así. Lo vi en algún tutorial y decidí usarlo y la verdad es que introduzco un DNI me vuelca el valor al campo DNI del subformulario.

¿Me pueden decir si esta es una manera correcta de hacerlo o es una gran chapuza? Y en ese caso ¿cómo podría volcar o llamar a los datos de un campo que están en un formulario y me apareciesen en el otro?

1 Respuesta

Respuesta
2

Lo estás haciendo correctamente. Piensa que la traducción del inglés no es buena. Lo del campo Principal, se refiere al formulario y lo de campos secundarios se refiere a campos del objeto secundario, es decir el subformulario. Si quieres haz la prueba a construirlos usando el asistente y verás como te los relaciona así.

muchas gracias. Entonces, si quiero que me vuelque los  datos de un formulario a otro con poner el nombre del campo que contiene los datos que quiero que me aparezcan en el subformuliario en vinculación de datos principales  y   el nombre del campo del subformulario que recoge el dato ¿bastaría? ¿así de sencillo?

Vamos a ver si me explico, si lo que quieres es que al poner, por ejemplo, el cursor en un control del subformulario, su valor sea igual al de un control del formulario, basta con poner en sus propiedades-eventos-crear un procedimiento de evento y entre Private Sub y End Sub poner

nombredelcontrol=me.parent!nombredelcontroldelformulario

Es decir, que sea igual al valor que sea del control del formulario "padre"

Por el contrario, si quieres que el valor de un control del formulario sea igual al valor de un control del registro activo de un subformulario, en sus propiedades-eventos-al recibir el enfoque crea un procedimiento de evento y entre Private Sub y End Sub escribe

nombredelcontrol=me!nombredelsubformulario.form!nombredelcontroldelsubformulario

Te explicas perfectamente. Es mi torpeza en este tema lo que bloquea.

Si yo tengo una tabla llamada DATOS ALUMNOS  y otra tabla llamada cursos donde cada registro es un curso diferente y la relación es po DNI. En la tabla de datos de alumnos se llama dni y en la tabla de cursos dnialumno

Hago un formulario por cada tabla. el Foralumnos tiene el subformulario forcur

Doy de alta un un nuevo alumno introducciendo un DNI  y abro el subformulario deForcur que tiene  un campo DNI (se que no es necesario que esté pero como no controlo quiero comprobar qeu lo vuelca). Para conseguir que me aparezca el DNI y me lo vuelque en la tabla de frocur puedo hacer alguna de estas acciones:

1- vincular por campo principal y secundario DNI en el formulario Foralumnos

2- Private Sub DNIALUMNO_AfterUpdate()

DNIALUMNO=me.parent!"DNI", "FORALUMNOS" (hay algo aquí que no me funciona)

 ¿es así?

Y pregunta. Si escribo esto también me lo vuelca ¿es correcta?

Private Sub DNI_AfterUpdate()
DNIALUMNO = DLookup("DNI", "FORALUMNOS", "DNI='" & Me.DNI & "'")
End Sub

Perdona mi mareo pero es fruto de mi ignoracia y mezclar conceptos

Lucía, si las tablas, y por tanto los formularios, están relacionadas por el DNI, no hace falta que pongas ningún valor al subformulario. Te pongo un ejemplo burdo. Si soy padre, no necesito decirle a los que viven en mi casa que son mis hijos y para siempre son mis hijos.

La ventaja de campos "únicos" es que puedes relacionarlos con lo que quieras. Por ejemplo, tengo la tabla Alumnos cada uno con su DNI, que como es único identifica a un único alumno.

Y tengo una tabla Exámenes donde voy a recoger los que se le hacen a un alumno

Como he relacionado la tabla Alumnos con Exámenes en una relación UNO a VARIOS( UN alumno - Varios exámenes), construyo un formulario con subformulario, donde puedes ver que en el subformulario no aparece para nada el campo DNI y relleno datos

Si abro la tabla Exámenes

Es decir, no necesitas escribir el DNI en el subformulario( hay que trabajar lo menos posible), ya te lo rellena automáticamente... de todas formas, si quieres mostrarlo, cada vez que pongas el cursor en un registro del subformulario ya te pone su valor.

Muchas gracias Julián... lo del dni clarísimo... pero si es otro campo dentro de estas tablas que no está relacionado de uno a varios y quiero que me lo vuelque en el subformulario ¿En este caso utilizario el DLookup? O ¿La instrucción que me mandaste?"cnombredelcontrol=me.parent!nombredelcontroldelformulario"

Lucía, es que puedes hacerlo de mil formas distintas. Te pongo en imágenes una, luego te explico otras.

Si tengo el formulario donde le he puesto un botón, que no sería necesario en absoluto, pero "se ve mejor"

Le digo que me pase al control Material del subformulario el nombre del alumno. El problema de esto es que te lo pasa al registro activo del subformulario, que es el que tiene la punta de flecha a la izquierda. Cuando pulso el botón

Observa como lo ha cambiado, pero sólo del registro activo. Podrías, antes de pulsar el botón hacer clic en el registro que quieres que aparezca(con lo cual lo conviertes en activo) y luego pulsas el botón y sólo te aparecerá en ese.

El código del evento(aunque podría ser en cualquier otro evento) al hacer clic del botón es, simplemente

Private Sub Comando13_Click()
Me!Examenes.Form!materia = Alumno
End Sub

Otra forma, al revés sería, poner, por ejemplo, en el evento Al hacer doble clic del control Materia del subformulario(con lo cual ese evento ya correspondería únicamente al registro activo)

Voy a hacer doble clic en Geografía para que me ponga ahí la dirección.

En este caso el código del evento Al hacer clic del cuadro de texto Materia es

Private Sub Materia_DblClick(Cancel As Integer)
Materia = Me.Parent!Dirección
End Sub

Otra forma, todo depende como trabajes, que no lo sé, sería, si vas a efectuar el cambio en todos

Los cuadros de texto Materia del formulario poner en sus propiedades-evento-al recibir el enfoque

Materia.defaultvalue=me.parent!alumno

Permíteme una pequeña explicación. En los formulario único sólo ves un único registro, si quieres ir a otro te desplazas. Pues el único registro que existe realmente es el registro activo, que en el caso de los formularios únicos es el que ves. Los demás no existen.

En un formulario tabular o vista hoja de datos en donde mejor se explica. Tu puedes ver varios registros pero el único que realmente "existe" es el que tiene la punta de fecha que cité antes. Los demás son "imágenes virtuales" que sólo tendrán "existencia real" cuando se conviertan en activos.

Ejemplo, tu abres un álbum de fotos. Solo tiene "existencia la página que abres". No sabes si en las anteriores o posteriores hay o no fotos. Sólo lo sabes, cuando te vas a una nueva página.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas