2011-05-11 34 views
0

我需要能夠將查詢過的表格的結果保存在Microsoft Access(2010)中。 Access中的報告只有基於查詢纔是動態的。如果我根據表格本身生成報表,則不會保存任何搜索詞/過濾器結果。在Access宏構建器中,DoCmd.save只保存當前表,我需要能夠在VBA中執行「另存爲」,這樣我就可以將過濾後的表保存爲查詢。如何在VBA中將MS Access過濾的表格保存爲查詢

感謝

+0

聲明「訪問中的報告只有基於查詢纔是動態的」對我來說似乎是錯誤的。您可以通過在DoCmd.OpenReport命令中傳遞WHERE條件來運行包含任何數據子集的報告。這是在報告的記錄源中沒有標準的一個原因,因此您可以根據需要打印所有記錄或任何子集。 – 2011-05-12 01:07:55

回答

1

您將需要建立一個基於表單的篩選和排序依據設置的SQL語句。

Dim sSQL As String 

sSQL = "Select ... From MyTable" 

If Len(Me.Filter) > 0 Then 
    sSQL = sSQL & " Where " & Me.Filter 
End If 

If Len(Me.OrderBy) > 0 Then 
    sSQL = sSQL & " Order By " & Me.OrderBy 
End If 

Call DBEngine.Workspaces(0).Databases(0).CreateQueryDef("MyQueryName", sSQL) 
+0

感謝您的輸入。我已經決定我可能會以錯誤的方式解決問題。我不會進行任何過濾,而是讓用戶更容易從其過濾的數據中生成報告。現在,沒有任何代碼可以使它更容易,用戶必須將過濾表保存爲查詢,然後打開所需的報告,該報告基於他們剛剛保存的查詢(每次保存過濾表時它們將替換查詢報告是基於)。我如何編寫一個宏來保存表格的過濾部分作爲查詢? – user748872 2011-05-12 19:42:04

+0

@ user748872 - AFAIK,沒有直接的方法來做到這一點。您需要構建SQL並在代碼中創建查詢。請記住,您可以擁有一個在數據表視圖中顯示數據的子表單,並執行與我所提供的類似的操作。 – Thomas 2011-05-12 20:04:37

+0

感謝您的幫助!我認爲在這種情況下,這只是用戶必須做的事情之一。它不像我喜歡的那樣友好,但至少它能完成工作。 – user748872 2011-05-12 20:42:17