2012-12-05 76 views
0

我對Access 2003 MDB項目使用Access 2007,並且在嘗試顯示查詢結果時遇到一些問題。這裏沒什麼特別的:在隱藏背景Access主窗口時顯示查詢結果

DoCmd.OpenQuery "myQuery", acViewNormal 

在一個簡單的形式,它的工作很好。不過,我躲在後臺訪問窗口下面的代碼:

Private Declare Function apiShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long 

Global Const SW_HIDE = 0 
Global Const SW_SHOWNORMAL = 1 
Global Const SW_SHOWMINIMIZED = 2 
Global Const SW_SHOWMAXIMIZED = 3 

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 

我能明顯呼籲fSetAccessWindow(1)帶回了全接口,但我想在這裏只顯示查詢結果,而不是Access的完整界面。可能嗎?有些用戶運行一個批處理文件(不知道這是否會造成任何影響)數據庫:

start msaccess /runtime "myFile.mdb" 

而且,因爲我所有的形式是情態動詞(必須是沒有界面工作或Windows只是不」 t顯示),查詢結果將顯示在後臺,無法設置焦點(用戶必須關閉活動應用程序窗口才能執行此操作)。

+1

構建一個使用myQuery作爲其記錄源的表單。然後,而不是'DoCmd.OpenQuery「myQuery」',打開表單。這應該與隱藏的應用程序窗口一起工作。 – HansUp

+0

是的,它應該。只是想知道是否有辦法爲我節省一些時間,但我猜想爲它建立一個表格並不是很長。 – dnLL

+1

我不認爲有另一種方式,因爲你不能直接打開查詢,並讓它成爲模態。我認爲在隱藏Access應用程序窗口時,非模態應用程序片段不可見。 – HansUp

回答

1

看起來似乎沒有其他解決方案而只是使用查詢作爲其記錄源來構建表單。