I have a simple access 2010 database and when it opens some code runs which hides everything in access apart from a form. This looks great for the user but I believe that this code is preventing me from being able to later display Reports in acViewPreview view. I confess that I do not fully understand the code that hides everything on the form On Load event (I copied it years ago and it worked but I cannot recall from where so cannot credit the actual creator) but I have posted the code below.

If I prevent the On Load code from running then I am able to view reports in acViewPreview view but the rest of access is visible. The code the hides access is as follows:

Private Sub Form_Load()
Call fSetAccessWindow(0)
End Sub

Option Compare Database
Option Explicit

Global Const SW_HIDE = 0
Global Const SW_SHOWNORMAL = 1
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
On Error Resume Next
Set loForm = Screen.ActiveForm

If Err <> 0 Then
loX = apiShowWindow(hWndAccessApp, nCmdShow)
Err.Clear
End If

If nCmdShow = SW_SHOWMINIMIZED And loForm.Modal = True Then
MsgBox "Cannot minimize Access with " _
& (loForm.Caption + " ") _
& "form on screen"
ElseIf nCmdShow = SW_HIDE And loForm.PopUp <> True Then
MsgBox "Cannot hide Access with " _
& (loForm.Caption + " ") _
& "form on screen"
Else
loX = apiShowWindow(hWndAccessApp, nCmdShow)
End If
fSetAccessWindow = (loX <> 0)
End Function

Could anyone please help me to either be able to temporarily reverse/disable the On Load code but only when a Report is run or perhaps suggest an alternative way of viewing the Report that would work whilst access is hidden by the On Load code?

1 Answers

0
Gustav On Best Solutions

Comment out the code line (the single-quote) to prevent the call of the function:

Private Sub Form_Load()
    ' Call fSetAccessWindow(0)
End Sub

or call it to "show the window normal":

Private Sub Form_Load()
    Call fSetAccessWindow(1)
End Sub