No me guarda un valor boolean que lo necesito en un formulario y lo activo en otro

Este es el código que tengo:

public j as boolean

Private Sub abrir_Click()  'primer formulario

If j = True Then
    DoCmd.OpenForm "FrmMenuNAZini"

Else
    DoCmd.OpenForm "Inicio_Turno"
    j = True
End If

End Sub

'lo que viene seguido es el siguiente formulario

Private Sub Fin_Equipo_Click()  'este código es de FrmMenuNAZini
j = False

End Sub

He estado dándole vueltas y no se como arreglarlo ya que si no cierro el primer formulario no pasa al inicio_Turno

1 Respuesta

Respuesta
2

Probaste poniendo:

Private Sub abrir_Click()  'primer formulario
If j = True Then
    DoCmd.OpenForm "FrmMenuNAZini"
    j = False
Else
    DoCmd.OpenForm "Inicio_Turno"
    j = True
End If
End Sub

O mejor aún, por si tienes configurados tus formularios como Emergentes y Modales:

Private Sub abrir_Click() 'primer formulario
If j = True Then
  j = False
  DoCmd.OpenForm "FrmMenuNAZini"
Else
  j = True
  DoCmd.OpenForm "Inicio_Turno"
End If
End Sub

Un saludo.


Tampoco me funciona y no se porqué, entre el código tendré algo que lo anule o no se...

Aunque no creo que tenga que ver, yo declararía la variable pública en un módulo independiente, no en el módulo asociado a un formulario (que no sé si ya lo has hecho así).

De todas formas, una variable pública no pierde su valor "porque sí", lo más probable es que le asignes un valor en alguna otra parte de tu código...

eske tampoco... lo he puesto en un modulo independiente como public y como global (por probar) y no funciona y le cambiado el nombre  a rosario y tampoco y seguro que rosario no está en el código.

Ah y gracias por la ayuda  y por responderme tan rápido.

un saludo

no se si tiene importancia pero es Access 2002- 2003

Pues no veo por qué no te funciona, porque debería (usar access 2003 no es el problema)

¿Me puedes explicar un poco más el funcionamiento de la BD y lo que pretendes?

Yo estuve haciendo unas pequeñas pruebas, y no consigo que no me funcione...

http://www.filebig.net/files/M37zW52jwx 

En ese archivo, desde el primer formulario (FInicio), al pulsar el botón se abre el Formulario2 (porque j=False por defecto).

Al pulsar el botón cerrar en ese Formulario, se cambia el valor de j a True, y al pulsar de nuevo el botón en FInicio, abre Formulario1.

En Formulario1 hay un botón que simplemente cambia el valor de j. Al pulsar el botón de FInicio, siempre abre el formulario correspondiente según el valor de j en cada momento...

De cualquier forma, te comento una posibilidad alternativa que tienes, con la ventaja de que te conservará el último valor aunque cierres la BD (por si lo ves interesante):

1º/ Creas una tabla con un único campo de tipo Si/No. Por ejemplo el campo se llama "rosario" y la tabla "TConfig"

2º/ En el código, usas DLookup para recuperar el valor de esa tabla, y una consulta de actualización para cambiar el valor del campo en la tabla:

If DLookup("rosario","TConfig") = True Then
    DoCmd.OpenForm "FrmMenuNAZini"

Else
    DoCmd.OpenForm "Inicio_Turno"
    CurrentDb.Execute "UPDATE TConfig SET rosario=-1"  ' Con -1 lo pones a True y con 0 a False
End If

3º/ Cada vez que quieras cambiarle el valor, usas la SQL de actualización correspondiente (CurrentDb.Execute "UPDATE TConfig SET rosario=...." )

muchísimas gracias por tu ayuda,

y lo que dices en la primera parte a mi también me parece que es imposible eske no tiene lógica que falle, intentaré hacer lo que me has dicho a ver si consigo y a ver si con eso es suficiente.

gracias otra vez!

ana

Si no te sale, no me cuesta nada echarle un ojo a tu BD. Me puedes subir aquí una copia sin datos en las tablas, solo con los formularios en cuestión, a ver si encuentro algo raro...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas