2016-07-29 82 views
0

我正在使用MS Access(2010)數據庫進行部門的半關鍵數據管理。它目前很小,約爲137 MB,我運行的查詢非常簡單,主要是聯合多個數據源。我應該如何處理間歇性MS Access錯誤?

我遇到了幾種類型的間歇性錯誤,其中一個查詢函數一開始就工作正常,但在後續運行中,沒有我改變任何東西,它會失敗。有時它會再次開始工作。

最近,我有一個查詢運行良好,我導出到Excel。在同一個訪問會話期間,它將首次運行,但當我嘗試第二次導出時返回「對象無效或不再設置」錯誤。它在關閉並重新打開數據庫後再次運行。這只是一個例子。

我開始擔心Access可能會對我的數據造成危害,直到我不舒服地繼續使用它。這種典型的Access行爲是否會導致數據丟失或損壞?

編輯爲示例問題添加查詢代碼。這實際上是建立了一系列訪問數據的查詢,SQL這些都:

最終查詢=

SELECT DISTINCT Var1, Var2, ...VarX 
FROM Query1 
LEFT JOIN Union_query 
    ON (Query1.DOB = Union_query.DOB) 
    AND (Query1.FST_NM = Union_query.FST_NM) 
    AND (Query1.LST_NM = Union_query.LST_NM); 

查詢1 =

SELECT * 
FROM ROSTER_LATEST 
INNER JOIN (SELECT max(UPDATE_DATE) AS LAST_DATE, SUB_ID 
FROM ROSTER_LATEST GROUP BY SUB_ID) 
    AS GRAB_DATE 
    ON (ROSTER_LATEST.SUB_ID = GRAB_DATE.SUB_ID) 
    AND (_ROSTER_LATEST.UPDATE_DATE = GRAB_DATE.LAST_DATE); 

聯合查詢=

SELECT * 
FROM Query2 
UNION 
SELECT * 
from Query3; 

查詢2 =

SELECT Var1, Var2, ...VarX 
FROM All_FHP 
INNER JOIN Query1 
    ON (All_FHP.Date_of_Birth = Query1.DOB) 
    AND (All_FHP.Last_Name = Query1.LST_NM) 
    AND (All_FHP.First_Name = Query1.FST_NM); 

查詢3 =

SELECT Var1, Var2, ...VarX 
FROM CBP_LIST 
INNER JOIN Query1 
    ON (CBP_LIST.Date_of_Birth = Query1.DOB) 
    AND (CBP_LIST.Last_Name = Query1.LST_NM) 
    AND (CBP_LIST.First_Name = Query1.FST_NM); 
+0

廣泛使用VBA代碼嗎?您是否將全局DAO對象用於記錄集和querydefs?你有沒有將數據庫分成代碼前端和數據後端?你是否經常更改分發給用戶? – dbmitch

+0

@dbmitch否對所有這些 – Rominus

+0

數據庫存儲在共享文件夾中嗎?如果是這樣,它是否曾被多個用戶同時打開過?另外,共享文件夾是位於真正的Windows機器上,還是位於NAS設備或其他存儲設備上? –

回答

0

作爲第一步,這將是一個好主意,保存一個備份副本,並嘗試「壓縮&修復」。

打開數據庫,單擊文件>信息>緊湊&修復。

看看這是否能解決您的問題。

+2

對於與VBA相關的奇怪錯誤,完整的反編譯/壓縮/重新編譯可能會更好。有關詳細信息,請參閱[此答案](http://stackoverflow.com/a/3268188/2144390)。 –