在Access 2007的導航窗格中,我們有「自定義」類別,可以創建一個自定義類別,將其命名,並添加表格,查詢等。是否可以使用VBA循環自定義所有項目類別?在Access 2007中,是否可以循環自定義類別中的項目?
例如,我創建了一個名爲「驗證」類別,它包含5個查詢。我想遍歷每個查詢並運行它。在僞代碼,它應該是這樣的:
For Each Query in Validations
DoCmd.OpenQuery "Query"
編輯:我開始尋找到它,它看起來像我需要訪問MSysNavPaneGroups表讓我的自定義組的ID。在我的情況下,ID = 235
此外,是否可以在此過程中創建Excel電子表格,並且如果查詢返回> 0行,是否將行粘貼到Sheet1,Sheet2等?就像:
Count = 1
For Each Query in Validations
DoCmd.OpenQuery "Query"
If Query.Rows > 0
Excel.Sheet(i).Name = Query.Name
Excel.Sheet(i).Rows = Query.Rows
Count = Count + 1
End If
我甚至沒有開始自己查看Excel部分,所以沒關係,如果你不想惹它。我更關心循環查看自定義類別中的查詢。
一如既往,謝謝!
編輯:我創建使用下面戈德的SQL名爲 「GetValidationNames」 查詢:
SELECT MSysNavPaneGroups.Name AS GroupName, MSysNavPaneGroupToObjects.Name AS ObjectName
FROM MSysNavPaneGroups INNER JOIN MSysNavPaneGroupToObjects
ON MSysNavPaneGroups.Id = MSysNavPaneGroupToObjects.GroupID
WHERE (((MSysNavPaneGroups.GroupCategoryID)=3))
ORDER BY MSysNavPaneGroups.Name, MSysNavPaneGroupToObjects.Name;
然後創建了一個帶有按鈕的形式,並在Button_Click()我增加了以下內容:
Dim rs as Recordset
Set rs = CurrentDb.OpenRecordset("GetValidationNames")
Do While Not rs.EOF
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, rs("ObjectName"), _
"C:\users\username\Desktop\ValidationResults.xlsx"
rs.MoveNext
Loop
這將運行所有查詢,並將每個作爲新選項卡添加到現有的Excel文件「ValidationResults.xlsx」
檢查'MSysNavPane *'系統表。他們掌握有關組的信息以及哪些數據庫對象與它們相關聯。我不知道檢索所需信息的正確方法,但是...我在對象模型中沒有看到任何方法。 – HansUp
@HansUp謝謝你..我看我可以從MSysNavPaneGroups和查詢的ID從MSysNavPaneGroupToObjects獲得組ID –
呀,你也許可以創造一個新的查詢要返回的是自定義組的成員查詢的名稱。但是,我不願意依賴查詢系統表。當我在Access 2007中看到有人在MSysObjects上遇到*「沒有讀取權限」的報告時,我關閉了。我不知道您是否可能遇到類似的問題,試圖讀取「MSysNavPane *」表。 – HansUp