** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Función Está Cargado
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoFunción Está Cargado

 Responder Responder
Autor
Mensaje
mfafa Ver desplegable
Asiduo
Asiduo


Unido: 23/Septiembre/2009
Localización: España
Estado: Sin conexión
Puntos: 497
Enlace directo a este mensaje Tema: Función Está Cargado
    Enviado: 23/Junio/2020 a las 08:42
Hola!

Tengo la siguiente función para saber si un formulario está cargado o no:-

Function EstáCargado(ByVal txtNombreFormulario As String) As Boolean
 ' Devuelve Verdadero si se ha cargado el formulario especificado.
   
    Const conObjetoEstaCerrado = 0
    Const conModoDiseño = 0
   
    If SysCmd(acSysCmdGetObjectState, acForm, txtNombreFormulario) <> conObjetoEstaCerrado Then
        If Forms(txtNombreFormulario).CurrentView <> conModoDiseño Then
            EstáCargado = True
        End If
    End If

End Function

y tengo este código para cerrar el formulario activo:-

Function Cerrar_Form()
Dim frmCurrentForm As Form
Set frmCurrentForm = Screen.ActiveForm
DoCmd.Close acForm, frmCurrentForm.Name
End Function

El problema es cuando no hay formulario abierto y presionas el botón "Cerrar" me salta un error, como podría compaginar las dos funciones para que cuando haya formulario abierto que se cierre y si no no se ejecute la función Cerrar_Form().

Muchas gracias.
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 23/Junio/2020 a las 10:00
Hola,

Primero una pregunta: ¿como puedes presionar un botón cerrar sin formulario?

Supongo que el error lo obtienes en la linea de asignación del frmCurrentForm al no tener ActiveForm. Para controlar eso necesitas manejadores de errores.

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
mfafa Ver desplegable
Asiduo
Asiduo


Unido: 23/Septiembre/2009
Localización: España
Estado: Sin conexión
Puntos: 497
Enlace directo a este mensaje Enviado: 23/Junio/2020 a las 10:37
Hola!

Tengo una especie de Ribbon con botones, y lo que pasa es que la gente empieza a presionar el botón a veces sin darse cuenta presionan sin tener nada abierto salvo el entorno de access.

Gracias a ti lo he solucionado utilizando Tratamiento de errores (que nunca me acuerdo de utilizar). Así queda el código:-

Function Cerrar_Form()
On Error GoTo Cerrar_TratamientoErrores
Dim frmCurrentForm As Form
Set frmCurrentForm = Screen.ActiveForm
DoCmd.Close acForm, frmCurrentForm.Name

Cerrar_Salir:
   DoCmd.Restore
   On Error GoTo 0
  Exit Function
Cerrar_TratamientoErrores:
   If Err = 2475 Then
    DoCmd.Quit
   End If
   Resume Cerrar_Salir
End Function

Muchísimas Gracias.

Se puede cerrar.


Editado por mfafa - 23/Junio/2020 a las 10:38
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable