Variables publicas entre Sub (procedures)
Hola, veras tengo una duda acerca de las variables publicas.
Tengo un formulario en el cual hago un cambio en un registro en un solo campo, pero hago antes hago una validación. Por eso, necesito dos eventos: "BeforeUpdate" y "Form_AfterUpdate". No utilizo el evento "AfterUpdate" porque me mira el cambio justo al actualizar ese campo, y me interesa el registro entero para hacer luego un Form.Requery (con el "AfterUpdate" a secas y tira adelante, pero al no moverme de registro da error).
Entonces tengo una variable definida en el evento "BeforeUpdate" y quiero que la lea luego el "Form_AfterUpdate".
Mi código es el siguiente:
--------------------
Option Compare Database
Public Sub CONTROL_BeforeUpdate(Cancel As Integer)
On Error GoTo blabla
Static var As String
var = Nz(Me.Form!CONTROL, " ")
blablabla:
Exit Sub
End Sub
Public Sub Form_AfterUpdate()
msgbox var 'me aparece en blanco
Forms!Formulario!Subform.Form.RecordSource = "CONTROL"
End Sub
--------------------
He probado lo que dicen en la web http://www.developerfusion.com/article/51/variables/6/ pero en cuanto pongo lo de "Call" en la primera función que tiene la variable o lo de "byval" o "byref" en la segunda como argumento me da un error de compilación:
---------
La expresión /aquí el evento\ que introdujo como valor de la propiedad de evento produjo un error. La declaración del procedimiento no coincide con la descripción del evento o el procedimiento que tiene el mismo nombre.
Visual Basic para Aplicaciones (VBA) ha encontrado un problema al intentar obtener acceso a una propiedad o método.
----------
He leido que se ha de hacer con Static. ¿Es posible hacer lo que quiero? Porque me da error si en teoría es válido el Call y el byref/byval?
Gracias por tu tiempo!
Tengo un formulario en el cual hago un cambio en un registro en un solo campo, pero hago antes hago una validación. Por eso, necesito dos eventos: "BeforeUpdate" y "Form_AfterUpdate". No utilizo el evento "AfterUpdate" porque me mira el cambio justo al actualizar ese campo, y me interesa el registro entero para hacer luego un Form.Requery (con el "AfterUpdate" a secas y tira adelante, pero al no moverme de registro da error).
Entonces tengo una variable definida en el evento "BeforeUpdate" y quiero que la lea luego el "Form_AfterUpdate".
Mi código es el siguiente:
--------------------
Option Compare Database
Public Sub CONTROL_BeforeUpdate(Cancel As Integer)
On Error GoTo blabla
Static var As String
var = Nz(Me.Form!CONTROL, " ")
blablabla:
Exit Sub
End Sub
Public Sub Form_AfterUpdate()
msgbox var 'me aparece en blanco
Forms!Formulario!Subform.Form.RecordSource = "CONTROL"
End Sub
--------------------
He probado lo que dicen en la web http://www.developerfusion.com/article/51/variables/6/ pero en cuanto pongo lo de "Call" en la primera función que tiene la variable o lo de "byval" o "byref" en la segunda como argumento me da un error de compilación:
---------
La expresión /aquí el evento\ que introdujo como valor de la propiedad de evento produjo un error. La declaración del procedimiento no coincide con la descripción del evento o el procedimiento que tiene el mismo nombre.
Visual Basic para Aplicaciones (VBA) ha encontrado un problema al intentar obtener acceso a una propiedad o método.
----------
He leido que se ha de hacer con Static. ¿Es posible hacer lo que quiero? Porque me da error si en teoría es válido el Call y el byref/byval?
Gracias por tu tiempo!
Respuesta de barrusfalco
1