Pregunta

Entonces, ¿cómo puedo pasar un valor de un formulario a otro?Por ejemplo:El usuario seleccione una organización de la lista y esto abre un viaje de forma que permite a un usuario introducir información sobre el viaje.En un lugar me gustaría añadir otro poco de pop-up forma donde se puede introducir la información de contacto (sólo un nombre y un teléfono para POC) de la organización que están visitando.

Así que cuando esa forma inicial se abre desde la pantalla de selección tiene dos Identificadores que simplemente están ocultas en los cuadros de texto (uno de los tripID, y el otro es el OrgID), así que ¿cómo puedo pasar estos a la segunda pequeño pop-up forma para que la información de contacto que tiene el Identificadores relativos con ella.

Gracias.

¿Fue útil?

Solución

La mejor solución en estos casos es no intentó pasar a un montón de variables.Es demasiado código, y es inflexible.Por ejemplo, si usted necesita para pasar dos valores, lo que ocurre en el transcurso de los años, cuando ese requisito crece hasta 5 valores?Tratando de mantener y pasar todo un golpe de valores es demasiado trabajo de codificación.

Tenga en cuenta que cada forma en ms-access es realmente una clase de objetos que se pueden manipular en el código.Así, el uso de un objeto de enfoque aquí y usted encuentra que usted no sólo escribir menos código, pero su código será más limpio, más modular, sin necesidad de variables globales, y el código que se escribe a menudo puede ser re-utilizado entre diferentes formas.

Aquí es cómo:

En general, cuando uno forma de lanza otra forma en la 2ª forma en las formas en-evento abierto (de hecho, puede utilizar incluso tan tarde como el evento de carga) usted puede recoger una referencia a la ANTERIOR forma de objeto.En otras palabras, puede utilizar un objeto de enfoque aquí.

En los formularios de nivel de módulo, para el formulario I declarar un objeto de formulario como:

Option Compare Database
Option Explicit 
dim frmPrevious       as form 

Luego, en los formularios en el evento de carga, vamos:

Set frmPrevious = Screen.ActiveForm

Ahora, el código de nuestro formulario puede usar LIBREMENTE el código, eventos, incluso varibles declarado como público a partir de la anterior forma en el código.

Por lo tanto, si desea forzar un disco de escribir de la forma anterior, y re-carga de datos.

frmPrevious.Refresh

Si desea establecer el valor del ID, a continuación, ir a:

frmPrevious!ID = some value

Y, tenga en cuenta que usted puede incluso declarar la forma anterior como una variable PÚBLICA de esa forma, y por lo tanto, si dos formas de profundidad, usted podría ir:

frmPrevious.frmPrevious!ID = some value

Así que, simplemente declarar un objeto forms en CADA una de las formas módulo de código (o al menos aquellos en los que usted necesita para usar los valores en el código).El anterior significa que cualquier código que tiene una lista de referencia a la anterior forma de objeto.Las funciones declaradas como public en un formulario se convertirá en un MÉTODO de la forma, y se puede ejecutar como:

frmPrevious.MyCustomRefresh

o incluso cosas como la opción de forzar el formulario anterior para generar y configurar un número de factura:

frmPrevous.SetInvoice

o

frmPrevious.SetProjectStatusOn

Así que no sólo se puede shuffle de datos y los valores de ida y vuelta, pero se puede ejecutar fácilmente las características y funciones que se construye en el código para el prevous forma.

De hecho, como un estándar de codificación, la MAYORÍA de mis formas, tienen una función pública denominada MyRefresh.

Tenga en cuenta que la belleza de este enfoque es que así puede leer + uso + de los valores del conjunto de que forma anterior.Esto permite que el código no sólo para recibir los valores, sino también el conjunto de valores en que la forma anterior.Así que este enfoque es bi-direccional.Puede mezclar los datos y valores de ida y vuelta entre las formas.La otra ventaja aquí es que NO se limita sólo a las variables, pero puede utilizar los campos, los valores de control (eventos, propiedades), etc.

Este enfoque significa que gran parte de la forma anterior es ahora a su alcance.

Así que no trates de pasar todo un golpe de variables.Pasar una referencia a la forma y que tengas un buen listo objeto al alcance de su mano y hace que este tipo de problema de codificación de una brisa.

Otros consejos

La forma más habitual sería hacer referencia a los cuadros de texto en la forma inicial de la forma emergente, como esto:

Forms!frmInitialForm!tripID
Forms!frmInitialForm!OrgID

Sin embargo, esto se une estrechamente la forma emergente a la forma inicial, por lo que no se puede utilizar ningún otro lugar de la aplicación.

Un mejor enfoque es utilizar AbrirArgs:

DoCmd.OpenForm "frmPopup", OpenArgs:=Me.tripID & ", " & me.OrgID

Esto coloca a sus dos valores en una cadena, que se transmite a la forma emergente. A continuación, puede analizar los dos valores de las AbrirArgs utilizando la función Split.

Para obtener más información sobre el paso de parámetros utilizando AbrirArgs, consulte: http://www.fmsinc.com/free/NewTips/Access/accesstip13.asp

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top