Como ocultar el área de trabajo de access y navegar solo con formularios

Se me ha presentado un problema al momento de ejecutar la base de datos de este modo. Seguí las instrucciones de este vídeo: ( https://www.youtube.com/watch?v=FKx4ZYmDPIw) Ya he ingresado los códigos debidos para que la base de datos se ejecute de esta manera, pero al abrir un formulario y darle click en el botón imprimir (vista previa) donde hice un informe la base de datos se detiene y no puedo  avanzar más.

2 respuestas

Respuesta
3

Creo que esto te puede fiuncionar ( al menos a mi me funcionó)

Creá un formulario en blanco y en vba crea un evento al abrir y otro al descargar con este código:

Option Compare Database
Option Explicit
Const SW_HIDE = 0
Const SW_NORMAL = 1
Const SW_MINIMIZED = 2
Const SW_MAXIMIZED = 3
Private 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 "Principal", windowmode:=acDialog
DoCmd.Close acForm, "Formulario1"
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim lngRetCode As Long
lngRetCode = ShowWindow(hWndAccessApp, SW_MAXIMIZED)
End Sub

Esto te oculta todo el entorno de access. Ojo, tienen que estar todos los formularios en modal y emergente (otros en la pestaña de propiedades)

El form "Principal", es el que queres que se vea primero.

al informe, le pones esto:

Private Sub Report_Close()
fSetAccessWindow (0)
End Sub

Private Sub Report_Load()
FSetAccessWindow (0)
DoCmd. Restore
End Sub

Y te creas un botón con un macro que te imprima ese informe.

Me olvidaba! En la parte de Opciones de Access > base de datos actual, tienes que poner en donde dice "Mostrar formulario" el nombre del formulario en blanco que creaste

Muchas gracias pero tengo una pregunta: ¿A cada informe debo ponerle ese código? 

Si. Lo probe sin ponerlo y no me funcionó, después se lo agregué a todos los formularios e informes y ahí anduvo de 10. En realidd es una mezcla de dos cosas que saque de internet. Es como un Quid pro quo que hago acá, es seguro que el código sea mejorable, si alguien lo puede hacer, bienvenido, pero así funciona.

¿Entonces también debo agregarle el código a todos los formularios? Muchas gracias lo intentaré. 

Si, Así es como me funcionó. Contame si te sirvió

Me sale esto cuando intento abrir los informes, desde el modo emergente. Con los formularios no tengo problema, es con los informes. Ah. 

Crea un modulo aparte y agrega el siguiente código

Option Compare Database
Option Explicit
Const SW_HIDE = 0
Const SW_NORMAL = 1
Const SW_MINIMIZED = 2
Const SW_MAXIMIZED = 3
Private Declare Function ShowWindow Lib "user32" _
(ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Function fSetAccessWindow(nCmdShow As Long)
Dim loX As Long
Dim loForm As Form
loX = ShowWindow(hWndAccessApp, nCmdShow)
End Function

Respuesta
1

La solución para el mensaje de error ambiguo de fAccesswindow es

FSetAccessWindow (0)

Me funcionó a las maravillas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas