Está en la página 1de 5

Apuntes de VBA en Acces Parte 2

Para proyectos en la administración de datos y la automatización de los mismos con el uso de formularios, muchas veces
se requiere proceder por medio de un dato principal que se usa para la evaluación de un registro, antes de proceder a
una consulta que llame otros registros vinculados con el registro seleccionado, para ello podemos realizar un formulario,
cuyo código oculte de la vista del usuario al formulario luego de presionar un botón y sea este el valor usado para
futuros filtros en la selección de registros, para ello podemos usar el siguiente comando:

fAccessWindow

cuya sintaxis es la siguiente:

fAccessWindow ([procedimiento como string], [disparador como booleano], [verificador del estado como booleano])

Recordando que los procedimientos booleanos hacen alusión a estados binarios de Verdadero o Falso,

Por ejemplo:

En el supuesto que queremos ocultar un formulario de login, pero necesitamos mantener el registro del usuario para
poder asignarle privilegios de acceso a los diferentes formularios, tendríamos que ingresar dicho comando en el Evento
“Al abrir” de esta manera:

fAccessWindow "Hide", False, False (vea figura 1)

Figura 1
Se debe considerar que para la aplicación de dicho comando y tener éxito en la ejecución del mismo, se deben
configurar las propiedades del formulario como:

Emergente: Si

Modal: Si

Cabe mencionar que para que la variable del ejemplo “HIDE”, funcione correctamente, se debe especificar
preferentemente como una variable publica en los Módulos, para este ejemplo se realizó lo siguiente:

Option Compare Database

Option Explicit

'Guarda Valor de Estados de Ventana

Dim dwReturn As Long

'Constantes de Estado de Ventana

Const SW_HIDE = 0

Const SW_SHOWNORMAL = 1

Const SW_SHOWMINIMIZED = 2

Const SW_SHOWMAXIMIZED = 3

' Se identifica Plataforma 32 o 64 bits'

#If Win64 Then

Private Declare PtrSafe Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long

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

#Else

' Private Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long

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

#End If

(ver figura 2)
Observación:

Figura 2

Esta es la segunda parte del código, incluida en el módulo como pública:

'Llamada de funcion para ocultar Ventana de Access

Public Function fAccessWindow(Optional Procedure As String, Optional SwitchStatus As Boolean, Optional StatusCheck
As Boolean) As Boolean

'Tres Modos de llamada de Ventana: Ocultada, Visible, Minimizada

If Procedure = "Hide" Then

dwReturn = ShowWindow(Application.hWndAccessApp, SW_HIDE)

End If

If Procedure = "Show" Then

dwReturn = ShowWindow(Application.hWndAccessApp, SW_SHOWMAXIMIZED)

End If

If Procedure = "Minimize" Then

dwReturn = ShowWindow(Application.hWndAccessApp, SW_SHOWMINIMIZED)


End If

If SwitchStatus = True Then

If IsWindowVisible(hWndAccessApp) = 1 Then

dwReturn = ShowWindow(Application.hWndAccessApp, SW_HIDE)

Else

dwReturn = ShowWindow(Application.hWndAccessApp, SW_SHOWMAXIMIZED)

End If

End If

If StatusCheck = True Then

If IsWindowVisible(hWndAccessApp) = 0 Then

fAccessWindow = False

End If

If IsWindowVisible(hWndAccessApp) = 1 Then

fAccessWindow = True

End If

End If

End Function

(Ver figura 3)
Figura 3

También podría gustarte