Quisiera saber de qué manera se puede pasar un dato de un campo text que se encuentra en un subformulario a un formulario distin

Quisiera saber de qué manera se puede pasar un dato de un campo text que se encuentra en un subformulario a un formulario distinto.

El formulario se llama Búsqueda por autor

El subformulario Búsqueda por autor.

Los pasos son lo siguientes:

Tras introducir el autor se abre el subformulario con todos los libros que tenemos de él y con los campos, “ IdLibros, título, Autor, situación del libro”. Ese último campo indica si está prestado o por el contrario si está disponible)

Lo que quiero es que si el libro está prestado, al pinchar el en campo “TÍTULO” (en el subformulario), se abra el formulario que se llama F_Solicitud lectura y en el que aparezca el título seleccionado (en el subformulario), por el contrario si el libro está libre, entonces que no haga nada.

El cerrar un formulario y abrir el otro lo tengo claro.

Las instrucciones que hasta ahora se me han ocurrido han sido infructuosas han sido las siguientes:

Estando en el formulario final (F_Solicitud lectura).

Op 1)= Formularios![Busqueda por autor]![Subformulario busqueda por autor] .Titulo

Op 2)=[Formularios]![Subformulario búsqueda por autor]![TITULO].

Lo que sí ha funcionado “relativamente” ha sido cuando he generado una macro en la que he seleccionado definirVariableTemporal., pero me genera dos problemas,

  1. Que los datos se mantienen en memoria.
  2. Que si se pincha dos veces en un título o en dos títulos distintos, enseguida lo asume como título activo, se salta todos los impedimentos que le pongo (que no son muchos dado mis conocimientos), y se dirige al formulario para que se le incluya en la lista de espera.

1 Respuesta

Respuesta
3

Desde F_Solicitud lectura, la sintaxis para hacer referencia al control del subformulario del otro formulario, podrías usar (en código VBA, para que el dato te quede grabado):

Me.Titulo=Forms("Busqueda por autor").[Subformulario busqueda por autor].Form.Titulo

Previamente deberías comprobar que el formulario esta cargado, por si las moscas.

Otra opción que tendrías, menos liosa con la sintaxis, sería, ya que abres el formulario desde el subformulario, usar la propiedad OpenArgs para pasarle el titulo del libro.

La idea sería:

En el evento "Al hacer clic" del campo Título del subformulario, pones:

DoCmd. OpenForm "F_Solicitud lectura",,,,,, Me. Titulo

Y en el evento "Al cargar" del formulario "F_Solicitud lectura", le pasarías el valor al campo correspondiente:

If Len(Me.OpenArgs)>0 Then Me.Titulo=Me.OpenArgs

Un saludo.


Muchas gracias.

Funciona perfectamente la segunda opción. 

La primera tendré que ver el motivo por el que no lo ha hecho.

Muchas gracias y un saludo

La primera opción no dices por qué no te funciona, pero imagino que será por culpa de que algún nombre no es correcto. En concreto me refiero al nombre del control subformulario (el objeto donde se inserta el formulario que hace de subformulario), pues es posible que se llame "SecundarioX" (donde POR sea un número) y no "Subformulario búsqueda por autor".

Hola Sveinbjorn El Rojo. En contestación a la pregunta que me haces te diré que el error que se produce es el 3075 en tiempo de ejecución. Error de sintaxis (falta operador) en la expresión de consulta '[Usuario] = 'xxxxxxxx' And  [idLibros] =' 

Tengo que decir que la instrucción la provoqué con el generador de instrucciones y digo provoqué porque utilizando esta herramienta nunca me daba opción de tener el formulario y el subformulario a la vez, por lo que la introduje anualmente.

Un saludo y gracias. 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas