(access) Pase de valor entrado en formulario1 a otro Formulario2
Tengo un formulario donde ingreso un valor y deseo que este valor pueda desplegarlo al abrir otro formulario.-
1 Respuesta
Tienes razón, muy pobre mi pregunta. Es posible que me expliques con un sencillo (pero como para tontos) ejemplo?
Gracias por tu respuesta.
Tontos no hay ninguno, desconocimiento sí (lo cuál es lógico)
Lo que quería hacerte ver es que hay muchos escenarios y sólo tú sabes cuál es el tuyo. Intento explicarlo con 3 ejemplos rápidamente (seguro que podría poner mas "escenarios")
1) Tengo 2 formularios ABIERTOS y quiero que el valor que introduzco en el control de uno de ellos pase a un control del otro formulario: Envío el foco al segundo formulario, asigno el valor al control del segundo formulario y si hace falta, regreso el foco al primero.
2) El que te comentaba cómo más genérico: Tengo un formulario, relleno los controles y lo cierro. Luego abro otro formulario y quiero que el valor que he introducido en un control del primero se me refleje en un control del segundo. Para ello puedo crear una variable publica. ¿Cómo se hace?, Creo un módulo, y en el asigno la variable:
Public mivalor as string
(Mivalor o el nombre que quieras)
Pongo el tipo de valor a "string" porqué entiendo que estamos hablando de un campo tipo texto.
Luego sólo me queda en el primer formulario después de insertar el valor en el control deseado, poner en el evento oportuno (Después de actualizar, al cambiar...)
mivalor = me.Nombre_mi_control
Al entrar al segundo formulario, en el evento que corresponda, que yo no lo se, ya que no se si se abre en un registro nuevo, en uno determinado, en el primero...
Pondría: me.Nombre_control_segundo_formulario = mivalor
Y el tercer ejemplo sería la explicación: Los datos en access se guardan en tablas. Los formularios no son más que la representación de los mismos y la herramienta para interactuar con ellos. Por eso mientras un formulario está abierto puede recibir o dar datos, (Ya que digamos la "tabla" esta abierta). Cuando un formulario se cierra, se cierra la tabla, con lo que esta no puede ni dar ni recibir datos. Por eso la variable pública, que se mantendrá MIENTRAS NO SE CIERRE LA BD. Una vez cerrada la aplicación, la variable perderá su valor.
Pero siempre hay un sitio, en este caso (el de el valor introducido en el control de un formulario) en el que si se mantendrá: En la TABLA. Es por eso, que si no hay ningún otro inconveniente, es la solución que suelo usar y recomendar (que por otra parte no es difícil) y es recuperar el valor de esa tabla. Para ello lo más fácil y práctico es usar el Dlookup (Dbusq) que te devuelve el valor de un campo determinado, de una tabla determinada que cumpla con el filtro que le pasamos. Pon el editor de VBA y busca en la ayuda por Dlookup`y verás como casi seguro se adapta a las necesidades.
No te pongo ningún ejemplo definitivo, porque como ves te tendría que poner varios, sin saber si realmente alguno de ellos te solucionaría algo. Mira un poco lo que te comento, mira la ayuda, mira lo que tienes y lo que quieres y me comentas, y si es necesario montamos el ejemplo necesario.
(Por otra parte, también te recomiendo que eches un vistazo a los ejemplos y al código de los ejemplos (pocos de momento) que tengo colgados en los enlaces que te pase en el anterior mensaje. Creo que aclaran muchas cosas y están comentado de forma sencillita.
Deseo usar esta variable publica en una Consulta poniéndola en el campo CRITERIO, como la escribo?, ya intente varias y me da error.
Vamos por partes. No, no es lo mismo un "modulo normal" que un "modulo de clase". Un módulo de clase se utiliza para crear una "clase". Un formulario es una "clase", lo que pasa es que ya viene definida por access y por eso podemos acceder a sus propiedades.
Tu puedes crear un "objeto" y definir sus "propiedades" y luego utilizarlas en el resto de la aplicación. Pero... ¿Crearías un módulo de clase para definir un formulario y sus propiedades?. Lógicamente, no, porque ya lo ha hecho Access por ti. Entonces... (Y contestando a la segunda pregunta) ¿Para qué complicarse creando una variable, para luego introducirla en algo tan de Access como una consulta? (Aunque Access y VBA sean hermanas, no son exactamente lo mismo).
Intento arrojarte algo de luz, (aunque aún no me has dicho si el dato se guarda en una tabla o no, si lo necesitas después de haber salido de la aplicación...)
Creo una tabla llamada "TEMPORAL", con un sólo campo "MI_VARIABLE" y un sólo registro.
A partir de ahí, desde cualquier parte de la aplicación, puedo cambiar el valor de ese registro de la tabla "TEMPORAL". Ya tengo creada mi "Variable pública", sin necesidad de ningún módulo.
Puedo cambiar su valor cuando lo necesite y puedo coger su valor cuando lo necesite, (cómo en tu caso desde una consulta) de manera fácil.
Si has entrado en los enlaces que te deje, verás que mi lema es "Access fácil", porque lo que Access hace por ti, ¿para qué complicarlo?.
Además de esta manera, si necesitas más de una variable, sólo te hace falta crear en la tabla un indice (Id) y cada registro, será una variable pública, a la cual llamando desde su ID podre cambiarle el valor o trabajar con el.
- Compartir respuesta