Abrir un formulario desde un registro de otro form

Tengo un formulario creado como hoja de datos que contiene un campo de nombre de alumno. Tengo otro formulario en el que puedo ver más datos de alumnos ademas de su nombre. Lo que quiero hacer y no me sale es que dentro del primer formulario pulsando en el nombre de un alumno pueda abrir el formulario de ese alumno para ver el resto de sus datos. Por ahora he conseguido abrir el formulario; pero me lo abre en el primer registro existente. Esto lo he conseguido de la siguiente forma: en la vista diseño del formulario selecciono el campo en concreto que quiero que sea clicado y activo el menu de propiedades. Selecciono EVENTOS>AL HACER CLICK>GENERADOR DE MACROS>ACCIÓN>ABRIR FORMULARIO> en el menú inferior indico el nombre del formulario que deseo que se abra. Y ya no se hacer nada más. Me imagino que tendré que indicarle alguna condición pero no tengo ni idea como hacerlo. Por favor, alguno puede echarme una mano, ya llevo muchos días intentándolo.

1 respuesta

Respuesta
2
Para realizar lo que quieres, debes poner como Origen de datos una consulta filtrada por el campo seleccionado del formulario principal, tendrías que poner algo así.
SELECT Usuarios.DNI, Usuarios.Nombre FROM Usuarios WHERE Usuarios.DNI Like [Formularios]![TuFormularioPrincipal]![Nombre];
Esto selecciona los datos que quieres pero donde el campo Nombre sea igual al campo seleccionado en el formulario "TuFormularioPrincipal".
Ya me comentas.
Hola, muchas gracias por tu rápida respuesta. Disculpa mi ignorancia, pero ¿dónde debo escribir ese código?. ¿Quizás en EVENTOS>AL HACER CLICK>MACRO>?.
En el modo de edición del formulario, pincha con el botón derecho sobre la esquina superior izquierda del formulario, aparece como un cuadrado negro, y hay en las opciones busca el apartado de origen de datos del formulario.
el código que me aparece  en DATOS> ORIGEN DEL REGISTRO es: SELECT curso_alumno.dni, [ficha alumno].nombre, curso_alumno.valoración, curso_alumno.idCurso FROM [ficha alumno] INNER JOIN curso_alumno ON [ficha alumno].idalumno=curso_alumno.dni;  ¿que debo hacer?
SELECT curso_alumno.dni, [ficha alumno].nombre, curso_alumno.valoración, curso_alumno.idCurso FROM [ficha alumno] INNER JOIN curso_alumno ON [ficha alumno].idalumno=curso_alumno.dni where curso_alumno.dni = Like [Formularios]![TuFormularioPrincipal]![CampoDni];
Sustituye "TuFromularioPrincipal" por el nombre del formulario desde donde llamas al segundo formulario, y "CampoDni" por el nombre del campo Dni del formulario principal.
Disculpa pero estoy muy perdido. 1º. Para hacer lo que quiero ¿necesito generar una macro como te explique anteriormente?. 2º. El código que me indicas, ¿en qué apartado tengo que escribirlo (en propiedades del formulario, o en propiedades del campo desde donde voy a clicar)?. 3º ¿Cuál es el formulario principal? (Yo tengo un formulario donde registro cursos que contiene un subformulario donde registro los alumnos que asisten a ese curso. Después tengo otro formulario donde registro datos del alumno que contiene otro subformulario donde veo los cursos que cursó. El primer formulario se llama "cursos" y su subformulario se llama "curso_alumno Subformulario" . Y el segundo formulario se llama "ficha alumno" y el subformulario asociado es "curso_alumno Subformulario1"). Muchas gracias.
Te he creado un ejemplo para que lo veas.
He incluido en el formulario alumno el evento doble click del campo id_alumno, para que al pinchar dos veces, se abra el formulario general filtrando por el id del alumno que en ese momento tenemos en el campo.
El formulario general, lo único que he modificado es en las propiedades general del formulario el origen de datos.
Espero te sea de ayuda
Puedes descargar el ejemplo desde aquí:
http://www.rutasysenderismo.com/Archivos/Ejemplo.rar
cuando lo descargues avisame y lo borro.
Hola, muchísimas gracias. Lo acabo de descargar y ahora mismo lo voy a analizar.
Discúlpame por mi ignorancia.
Tu ejemplo más o menos lo entiendo pero en mi caso la cosa se complica pues quiero hacer el click en un subformulario y que me abra un formulario que contiene otro subformulario con el resumen de sus registros. Por si me pudieses ayudar, en el siguiente vínculo puedes descargar el ejemplo con el que trato de aprender.  http://www.megaupload.com/?d=8B47TV02
No obstante me parece que necesitaría hacer un curso de SQL.
Muchísimas gracias por tu inestimable ayuda.
Con el ejemplo ya he caído, el fallo ha sido mio, je je lo siento, el problemas estaba que al llamar desde un subformulario, tienes que poner también el formulario padre para que coja el valor del subformulario seria en tu ejemplo en el formulario Ficha_Alumno en origen de datos poner esto:
SELECT [ficha alumno].idalumno, [ficha alumno].nombre FROM [ficha alumno]  WHERE ((([ficha alumno].idalumno) like Formularios!Cursos![curso_alumno Subformulario]!dni));
Si ves, llamo primero al formulario Cursos, y seguido separado por un ! Al subformulario que depende de el, y después el valo, si no ponemos el formulario padre, no coge ningún valor del subformulario.
Aquí tienes el enlace para bajarte el ejemplo con la modificación hecha.
http://www.rutasysenderismo.com/Archivos/formaci%C3%B3n.rar
Hola de nuevo. De nuevo muchas gracias. Esto es lo que buscaba; no obstante me he dado cuenta que solamente funciona la primera vez con el primer click. Las siguientes elecciones las hace con el primer de los alumnos seleccionados. Es decir si la primera vez seleccionamos a "maria" nos abre la ficha de maría, correcto. Pero después independientemente del alumno en que cliquemos nos abrirá siempre el alumno maría.
Bueno te he vuelto a subir el ejemplo. Para hacer lo que quieres hay que cerrar el formulario que se abre, ya que el filtro sigue activo, por eso te he modificado la macro, cerrando primero el objeto y luego volviendo a abrir el formulario, sino la única manera efectiva de hacerlo seria mediante código vba.
http://www.rutasysenderismo.com/Archivos/formaci%C3%B3n.rar
He probado tu solución y es exactamente lo que buscaba. Te agradezco de todo corazón tu inestimable ayuda, así como la rapidez de tus respuestas. Muchísimas gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas