Ocultar Entorno de Access 2007 y ver solo formularios

Apreciable ICUE:

Terminé la BD compuesta de la siguiente forma: 4 Tablas con sus cuatro formularios para ingresar datos; Un formulario" MENÚ" y un Formulario "SEGURIDAD". Quiero ocultar el entorno de access y solo ver mis formularios, probé con uno de los tantos códigos que salen en Todoexpertos y ninguno me ha funcionado, el último fue el que te adjunto y no me funcionó y me tira el siguiente error, te agradezco que me des el correcto, pues eres muy bueno en access. Tengo Access 2007 de 64 Bits.

Gracias.

Option Explicit
Const SW_HIDE = 0
Const SW_NORMAL = 1
Const SW_MINIMIZED = 2
Const SW_MAXIMIZED = 3
Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
 
Private Sub Form_Open(Cancel As Integer)
    Call ShowWindow(hWndAccessApp, SW_HIDE)
    DoCmd.OpenForm "CAMBIAR NOMBRE", windowmode:=acDialog
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
    Dim lngRetCode As Long
    lngRetCode = ShowWindow(hWndAccessApp, SW_MAXIMIZED)

2 Respuestas

Respuesta
2

Si creo el módulo

Y, en este caso uso un formulario de "entrada" y pongo en sus Propiedades-eventos-Al abrir

Y como éste es el formulario de inicio, cuando quiero abrir la base de datos

Me lo abre, en este caso, sobre el árbol de directorios, pero si en el escritorio hubieras puesto un icono de acceso directo

ICUE

Probé y me presenta ese error en el modulo

Option Compare Database

Global Const SW_HIDE = 0

Global Const SW_SHOWMINIMIZED = 2

Global Const SW_SHOWMAXIMIZED = 3

Private Declare Function apiShowWindow Lib "user32" ()

Option Compare Database

Global Const SW_HIDE = 0

Global Const SW_SHOWMINIMIZED = 2

Global Const SW_SHOWMAXIMIZED = 3

Private Declare Function apiShowWindow Lib "user32"  ()

Alias "ShowWindow" (ByVal hwnd As Long, _

ByVal nCmdShow As Long) As Long

Function fSetAccessWindow(nCmdShow As Long)

Dim loX As Long

Dim loForm As Form

loX = apiShowWindow(hWndAccessApp, nCmdShow)

End  Function

Function fSetAccessWindow(nCmdShow As Long)

Dim loX As Long

Dim loForm As Form

loX = apiShowWindow(hWndAccessApp, nCmdShow)

End  Function

Me inserta a la fuerza esos paréntesis en la línea Private Declare Function y la parte que te escribo en negrita me la presenta en color rojo y dice: Error de compilación, se esperaba fin de la instrucción.

¿Y la instrucción que pones en el evento al abrir en que formulario la pongo?

Gracias.

Mi Hermano no me abre los ejemplos que me mandaste, me sale un cuadro cerrar, al abrirlo.

Disculpa Gracias.

Para no repetir lo mismo, ya te han dado la respuesta.

¡Gracias! 

Fíjate que borré el código que me mandaste y luego lo volví a escribir en la misma forma y si funcionó

Respuesta
2

El problema "no está" en el código en sí, sino más bien en la arquitectura de la versión de Access que usas. Access de 64 bits no se lleva del todo bien con las APIs y no las puedes declarar como harías en un Access de 32 bits (que es como has hecho). Y el mismo problema te dará el código que te propone Icue, pues declaró la API para un Access de 32 bits.

Si a tu código le cambias la línea:

Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

por esta otra:

Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hwnd As LongPtr, ByVal nCmdShow As LongPtr) As LongPtr

Ya te debería funcionar.

Y en el código de Icue tendrías que declarar la función así:

Private Declare PtrSafe Function apiShowWindow Lib "user32" _
Alias "ShowWindow" (ByVal hwnd As LongPtr, _
ByVal nCmdShow As LongPtr) As LongPtr

Y si vas a usar la BD en ordenadores con versiones de Access de 32 y 64 bits, para no tener problemas deberías contemplar la opción de declara las dos formas con una variable condicional, así:

#If Win64 Then
  'Declaración API para sistemas de 64 bits
#Else
  'Declaración API para sistemas de 32 bits
#End If

Un saludo.



Sveinbjorn El Rojo:

En primer lugar agradezco tu ayuda, puse el código como tu me recomiendas y me quitó el error; pero al abrir la BD no sucede nada, sigue el entorno de access visible.

Es posible que esté el problema en la función que me recomendó Icue que me dice que la escriba en un formulario en el evento al abrir; en primer lugar no se en que formulario va y si la pruebo en el formulario Seguridad que es el de inicio, no me la acepta ni como macro, ni como Código, ni como expresión; estoy listo, ayúdame. 

Gracias.

La función la tienes que colocar en el evento "al abrir" o "al cargar" del primer formulario que se cargue en tu BD.

Otra opción sería llamarla desde una macro llamada "Autoexec", macro que se ejecutará automáticamente al abrir la BD.

Además, debes configurar tus formularios como "Emergente" y "modal", porque si no, se te ocultarán con el entorno de Access...

Te dejo aquí un rar con 3 ejemplos: http://www.filebig.net/files/yAjpnxqCx7 

El primero (Test), con tu código, el segundo (Test2) con el de Icue, y el tercero (Tes2macro), el mismo código de ICue, pero con la macro Autoexec en vez de programado en el formulario.

A mi los tres métodos me funcionan perfectamente y se muestra solo el formulario.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas