** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Saber si existe un formulario
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoSaber si existe un formulario

 Responder Responder
Autor
Mensaje
jorros Ver desplegable
Habitual
Habitual
Avatar

Unido: 20/Octubre/2008
Localización: España
Estado: Sin conexión
Puntos: 154
Enlace directo a este mensaje Tema: Saber si existe un formulario
    Enviado: 11/Febrero/2024 a las 08:36
Buenos dias 

Tengo un formulario TbUsuFormularios con el campo UsuNomForm Texto donde pongo el nombre de un formulario, quisiera que antes de actualizar comprobase que existe, para evitar errores de introducción.

No se me ocurre como consultarlo.

Gracias
Arriba
Parche Ver desplegable
Habitual
Habitual


Unido: 03/Julio/2018
Localización: Alicante
Estado: Sin conexión
Puntos: 170
Enlace directo a este mensaje Enviado: 11/Febrero/2024 a las 10:59
Hola,
https://learn.microsoft.com/es-es/office/vba/api/access.allforms
Espero que te sirva.

Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14702
Enlace directo a este mensaje Enviado: 11/Febrero/2024 a las 13:51
Hola,

Se puede recorrer la colección AllForms para comprobar que el nombre existe aunque también se puede mirar si el objeto existe en la tabla MSysObjects

Yo utilizo esta función:

Public Function FormExists(strNameForm As String) As Boolean

    ' esta función nos devuelve la existencia o no de un formulario en la aplicación
    ' para ello recorremos la tabla MSysObjects.
    ' Se podria utilizar un dcount o un dlookup pero requiere el doble de tiempo
    
    Dim rst As DAO.Recordset
    
    FormExists = False
    Set rst = CurrentDb.OpenRecordset("SELECT Name FROM MsysObjects WHERE Type = -32768 AND Name ='" & strNameForm & "'")
    FormExists = Not rst.EOF
    
    rst.Close
    Set rst = Nothing
    
End Function
Xavi, un minyó de Terrassa

Mi web
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 13962
Enlace directo a este mensaje Enviado: 11/Febrero/2024 a las 17:34
Yo más bien interpreto que necesitas saber si está abierto, no si existe.

En ese caso yo uso esto:

Public Function RT_EstaAbierto(ByVal Frm As String) As Boolean
    RT_EstaAbierto = False
    On Error Resume Next   'si no existe que no casque
    If CurrentProject.AllForms(Frm).IsLoaded Then
        If Err.Number = 2467 Then
            RT_EstaAbierto = False
          Else
            RT_EstaAbierto = True
        End If
    End If
End Function
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14702
Enlace directo a este mensaje Enviado: 11/Febrero/2024 a las 17:40
Ah! Si es para saber si el formulario está cargado yo utilizo esto otro. Además se evalúa que esté cargado en vista formulario

Public Function FormIsLoaded(ByVal strFormName As String) As Boolean
    If (SysCmd(acSysCmdGetObjectState, acForm, strFormName)) Then
        If (Forms(strFormName).CurrentView) Then
            FormIsLoaded = True
        End If
    End If
End Function

Como decimos, casi siempre hay más de un camino.

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
jorros Ver desplegable
Habitual
Habitual
Avatar

Unido: 20/Octubre/2008
Localización: España
Estado: Sin conexión
Puntos: 154
Enlace directo a este mensaje Enviado: 11/Febrero/2024 a las 17:40
Muchas gracias Xavi esto es justo lo que estaba buscando.

Se puede cerrar el hilo

Gracias Parche

Un saludo
Arriba
jorros Ver desplegable
Habitual
Habitual
Avatar

Unido: 20/Octubre/2008
Localización: España
Estado: Sin conexión
Puntos: 154
Enlace directo a este mensaje Enviado: 11/Febrero/2024 a las 17:49

Buenas tardes Jesus, en la tabla TbUsuFormularios tengo el campo texto UsuNomForm, en ese campo pongo el nombre del formulario, si me equivoco (espacio, coma, error etc) el nombre se graba y cuando lo uso para dar permisos a un usuario para que habrá ese formulario me casca. Debe ser cuando das de alta ese registro cuando debe comprobar que existe.

 

Muy agradecido con tu función que guardo con la de Xavi
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable