Declarar variables y condicionar su valor según formulario abierto

¿Cómo puedo utilizar variables declaras en toda la aplicación de access?

He creado un modulo "declaraciones"

Con este código:

Option Compare Database
Option Explicit
Sub declaraciones1()
'declaracion de variables publicas que utilizaremos en la
'aplicacion
    Dim strfsfid As String
    Dim strfsftipo As String
    Dim strfsfalm As String
    Dim strfsfmov As String
    Dim strfsfcodigo As String
    Dim strfsfdescripcion As String
    Dim strffecha As String
    Dim strfid As String
    Dim strfsfidserie As String
'primero comprobamos que formulario esta abierto para determinar
'que valor de colocamos a las variables declaradas
If CurrentProject.AllForms("frm_inventarioajustes").IsLoaded And Forms![frm_inventarioajustes]![Subformulariodetalleinvetarioajustes].[movetinv] = 2 Then
    strfsfid = Forms![frm_inventarioajustes]![Subformulariodetalleinvetarioajustes]![idajustedetinv]
    strfsftipo = Forms![frm_inventarioajustes]![Subformulariodetalleinvetarioajustes]![tipoinv]
    strfsfalm = Forms![frm_inventarioajustes]![Subformulariodetalleinvetarioajustes]![idalmetinv]
    strfsfmov = Forms![frm_inventarioajustes]![Subformulariodetalleinvetarioajustes]![movetinv]
    strfsfcodigo = Forms![frm_inventarioajustes]![Subformulariodetalleinvetarioajustes]![codintetinv]
    strfsfdescripcion = Forms![frm_inventarioajustes]![Subformulariodetalleinvetarioajustes]![descripcionetinv]
    strffecha = Forms![frm_inventarioajustes]![fechainv]
    strfid = Forms![frm_inventarioajustes]![idajusteinv]
    strfsfidserie = Forms![frm_inventarioajustes]![Subformulariodetalleinvetarioajustes]![idserie]
End If
End Sub

pero cuando ejecuto el formulario en donde llamo al formulario a otro formulario me marca error, y veo que las variables de he declarado esta vacias.

He creado un formulario en donde utilizo las variables que he declarado, esto para evitar escribir mas codigo, y cuando abro el formulario, se condiciona las variables si es el formulario "ajus..." esta abierto, en caso se sea otro formulario tendra otros valores.

este es el codigo donde las variables que declaro esta vacias:

Private Sub Form_BeforeInsert(Cancel As Integer)
Me!idtxt = strfsfid
Me!tipotxt = strfsftipo
Me!almtxt = strfsfalm
Me!movtxt = strfsfmov
Me!codigotxt = strfsfcodigo
Me!descripciontxt = strfsfdescripcion
Me!fechatxt = strffecha
Me.notxt = Nz(DMax("[no]", "[serie2]", "[id]=" & strfid), 0) + 1
End Sub
Private Sub Form_Load()
Call declaraciones1
If _
(IsNull(DLookup("[serie2].idcontrol", "[serie2]", "[serie2].[idcontrol]='" & stridserie & "'"))) Then
DoCmd.GoToRecord , , acNewRec
Me.Form.Filter = Me.idtxt
Me.Form.FilterOn = True
Me!idtxt = strfsfid
Me!tipotxt = strfsftipo
Me!almtxt = strfsfalm
Me!movtxt = strfsfmov
Me!codigotxt = strfsfcodigo
Me!descripciontxt = strfsfdescripcion
Me!fechatxt = strffecha
Else
Me.Form.Filter = "idcontrol LIKE '" & stridserie & "'"
Me.Form.FilterOn = True
End If
End Sub

su ayuda para comprender esto.

2 respuestas

Respuesta
3

Exacto, tal y como te ha explicado muy bien Sveinbjorn, has de utilizar variables PUBLIC para que funcione.

En PHP, el proceso es muy similiar sólo que se llaman variables "Globales".

S a l u d o s !

Respuesta
1

Tal como haces, no estás declarando variables públicas. Para hacerlo, has de usar Public en vez de Dim, y además, has de hacerlo fuera de cualquier procedimiento o función, por ejemplo:

Option Compare Database
Option Explicit
'===========================================================================================================================
'Declaramos las variables públicas
'===========================================================================================================================
Public resp As msgRespuesta
Public bolNuevo As Boolean
Public miOrigenForm As String
Public miTratamiento As Integer
Public soloDesconocido As Boolean
Public abreRazas As Boolean

Luego le asignas el valor a esas variables como haces con tu procedimiento Declaraciones 1 (ojo, borrando todos los dim...) y ya tienes las variables con valor disponibles en toda la aplicación.

Saludos!


Un nuevo espacio dedicado a Access, visítanos: http://nksvaccessolutions.com/ 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas