2011-12-05 22 views
2

我想弄清楚MS Access如何構建和運行報表時處理打開的數據庫對象。MS Access是否保留打開的對象?

我在每個報告中有幾十個查詢,並且由於我的數據庫已規範化,所以每個查詢都查看許多不同的表。但是,我似乎總是打開如此多的數據庫對象,Access不會讓我在報告中包含更多的查詢。我對如何生成報告的想法可能是天真的,但我只是假設Access會運行查詢,將數據放入報告中,關閉查詢和所有關聯的對象,然後重複。但似乎並非如此。

我甚至在意的唯一原因是因爲我正在加快我的報告速度。我在某處讀到你不應該建立你的表來簡化查詢,但爲了避免每次我嘗試運行報表時發生的7或8分鐘時間 - 我已經重新構建了表,所以查詢在生成數據時可以使用較少的對象。這些表格仍然在一定範圍內進行了歸一化處理,但我認爲唯一不利的一面是我在技術上將計算結果存儲在表格中。例如,我必須報告我們客戶羣的當前年齡,而不是用一個簡單的switch語句(它要求我查詢一個包含生日的單獨表格)對它們進行分組,而是將年齡範圍(18-22 ,23-27等)直接在表中。不管怎麼說,如果有人能夠啓發我關於訪問如何關閉數據庫對象,也許我可以明確地說明爲什麼我的報告太慢了。

感謝

+1

當你說Access不會讓你在報告中包含任何更多的查詢時,你指的是報告本身的記錄源?平均而言,您對特定報告綁定了多少個查詢? –

+0

谷歌「JETSHOWPLAN」。看到Jet/ACE正在製作的準查詢計劃可能有助於爲你解除神祕的事情。這對識別應該編入索引的字段特別有用。 – mwolfe02

+0

不是記錄源本身,而是通過子報告。合併後,子報告使用大約80個查詢(如果您計算子查詢,則大約爲110個) – jerry

回答

0

假設你真的有(正確的)標準化表,表是真的不可能減少的,你真的需要所有這些子報表附加在主報告中,您應該創建臨時表設置作爲您報告的數據源。這將會有點無聊,但是你可以創建一個步驟來執行查詢並生成一個或多個臨時表。當這些表格使用您希望在報告中過濾的數據創建時,應該比以前更快地打開報告。在報告的展覽/印刷之後,您應該放下臨時表或者保留它們,直到您需要這些特定數據,例如緩衝區。

否則,我建議你考慮你的數據庫的設計,如果可能的話。