原始 KB 編號: 310803
摘要
本文說明在 Access 資料庫使用參照資料的問題。
要瞭解參照錯誤需要瞭解在 Access 資料庫中參照程式庫的方式,以及在不中斷這些參照的情況下,在目的電腦上安裝資料庫所需功能。 本文摘要整理下列主題:
- 檢視 Access 資料庫參照內容
- 在 Access 中解析 Microsoft Visual Basic for Applications 參照內容
- 瞭解參照錯誤訊息
- 解決開發電腦的參照問題
- 散佈資料庫檔案
- 更新參照清單
- 散佈具有 ActiveX 控制項的資料庫檔案
- 重新登錄檔案
檢視 Access 資料庫參照內容
若要檢視目前的資料庫參照:
- 開啟資料庫。
- 按下 ALT+F11 啟動 Visual Basic 編輯器。
- 按一下 [工具] 功能表中的 [參照]。
解析 Access 中的 Visual Basic 參照
Access 會根據 [參照] 方塊中顯示的資訊,針對每個參照,載入相關檔案 (例如,型別程式庫、物件程式庫或控制項程式庫)。 如果 Access 找不到檔案,Access 會執行下列程式來尋找檔案:
- Access 會檢查記憶體目前是否已載入參照的檔案。
- 如果檔案未載入記憶體,Access 會嘗試確認是否存在
RefLibPaths
登錄機碼。 如果此機碼存在,Access 就會尋找跟參照名稱具有相同名稱的值。 如果找到符合的內容,Access 會從該名稱值指向的路徑載入參照內容。 - 然後,Access 會依下列順序在下列位置搜尋參照的檔案:
- Application 資料夾 (Msaccess.exe 檔的位置)。
- 在 [檔案] 功能表上按一下 [開啟] 時所看到的資料夾。
- Windows 或執行作業系統檔案的 winnt.sif 資料夾。
- Windows 或 winnt.sif 資料夾下的 [系統] 資料夾。
- PATH 環境變數中的資料夾,這些變數可由作業系統直接存取。
- 如果 Access 找不到檔案,則會發生參照錯誤。
瞭解參照錯誤訊息
有幾個錯誤訊息跟遺失的檔案有關,或者檔案跟資料庫使用的版本不同。 在大多數情況下,您可以在 Microsoft 知識庫中搜尋有關特定錯誤訊息的文章,也可以遵照本文的步驟解決錯誤。 在某些情況下,相依性檔案並未正確搭配主要檔案。
下列清單說明您可能會收到的一些參照錯誤訊息。 然而,請注意此清單並未包含所有可能的參照錯誤訊息。
「物件 ObjectName 的 MethodName 方法失敗」
一般來說,如果程式設計型別程式庫發生問題,則可能會收到此錯誤訊息,例如,無效的資料存取物件 (DAO) 動態連結程式庫 (DLL) 檔案。 您可在 Microsoft 知識庫中搜尋各種形式描述此錯誤訊息的文章。
「函數無法用於使用量運算式」
如果程式設計型別程式庫發生問題,就可能會收到此錯誤訊息。或者,如果程式碼並未特別呼叫正確的程式庫,而且檔案在參照清單中的優先順序低於包含相同函數名稱的檔案,例如,如果 DAO 程式碼搭配使用優先順序較高的 ActiveX Data Object (ADO) 程式庫。 如果表單或報表中包含 ActiveX 控制項,您也可能會收到此錯誤訊息。
「找不到專案或程式庫」
如果 Access 在參照清單中找不到檔案,您可能會收到此錯誤訊息。 檔案通常會在參照對話方塊中標示為遺失。 有時,檔案存在於開發電腦,但不在目的電腦。
「未定義的變數」或「使用者定義的類型未定義」
如果您透過使用者層級安全性精靈來保護的資料庫參照包含預設程式庫外的資料庫,您可能會收到其中一項錯誤訊息。 例如,存在於非安全資料庫中的資料庫參照,不會自動建立在新的安全資料庫之中。
「執行階段錯誤 5」、「程序呼叫或引數無效」、「目前的專案不會參照包含此符號的程式庫」,或「包含此符號的程式庫未參照目前的專案,因此符號缺乏定義」
如果資料庫、型別程式庫或物件程式庫的參照標示為遺失,您可能會收到下列其中一則錯誤訊息。
「ActiveX 元件無法建立物件」
此錯誤訊息並不一定代表跟 ActiveX 控制項有關。 例如,一個可能的原因是 DAO (ActiveX 元件) 無法建立物件,因為無法啟動 DAO 自動化伺服器。 常見的原因是,為程式提供參照功能的 DLL 未登錄或登錄不正確。
解決開發電腦的參照問題
建立新的空白資料庫,然後匯入另一個資料庫檔案中的物件時,如果程式碼或 ActiveX 控制項依賴的參照未預設包含在資料庫中,就會產生參照問題。 Access 2000 資料庫的預設參照如下:
- Visual Basic for Applications
- Microsoft Access 9.0 物件程式庫
- OLE Automation
- Microsoft ActiveX Data Objects (ADO) 2.1 程式庫
如果來源是另一個 Access 2000 資料庫,請確認參照相符。 如果來源位於舊版 Access,則表示可能正在使用 DAO 3.5 或更早版本;不過,Access 2000 預設不提供 DAO 3.5。 請嘗試移除 ADO 2.1 程式庫的參照 (如果存在) 並新增 DAO 3.6 物件程式庫的參照。
如果您從舊版 Access 轉換資料庫,且資料庫包含 Utility.mda 檔的參照,在大多數情況下,您可以移除此參照,因為 Access 2000 的預設參照包含呼叫此參照的功能。 如有其他 DAO 版本的參照,您也可移除這些參照,因為 DAO 3.6 可以處理這些功能。
若要新增程式庫參照:
- 開啟資料庫。
- 按下 ALT+F11 啟動 Visual Basic 編輯器。
- 按一下 [工具] 功能表中的 [參照]。
- 在 [可用參照] 下,按一下並選取程式庫名稱旁的核取方塊,然後按一下 [確定]。
若要移除程式庫參照:
- 開啟資料庫。
- 按下 ALT+F11 啟動 Visual Basic 編輯器。
- 按一下 [工具] 功能表中的 [參照]。
- 在 [可用參照] 下,按一下並清除程式庫名稱旁的核取方塊,然後按一下 [確定]。
散佈資料庫檔案
有兩種發佈資料庫檔案的基本方法。 您可以將檔案從開發電腦複製到目的電腦,也可以利用封裝及部署精靈來設定封裝。
如果將檔案從開發電腦複製到目的電腦,則只會複製資料庫檔案。 您必須手動確保參照清單中列出的所有檔案都可供使用且版本正確,在目的電腦上的相對位置跟開發電腦上相同。
當您在 Access 中開發執行階段的應用程式時,請注意,有些作業系統檔案必須跟執行階段應用程式一起發行。 這些檔案的封裝是由 Microsoft Office 2000 開發人員的封裝及部署精靈元件自動執行。 有時候包含的檔案版本,取決於開發電腦上安裝的其他應用程式,以及可能已修改作業系統檔案的其他應用程式。
遵照某些指引通常會確保當您在安裝執行階段應用程式時,使用的檔案版本不會跟目的電腦上的檔案發生衝突。 指引如下:
- 在任何電腦上開發 Access 資料庫。
- 建立硬碟已重新格式化的電腦環境,並僅安裝最早版本的可用作業系統、Office 及 Office 2000 開發人員。 在此電腦上執行封裝及部署精靈,以便建立應用程式的執行階段版本。 這可確保可在目的電腦上執行任何版本的檔案。
- 建立電腦環境,重新格式化硬碟,並僅安裝作業系統。 在此環境測試執行階段應用程式。
- 若應用程式未順利執行,您會知道是應用程式本身的問題。 您必須先識別問題並加以修正,再發佈應用程式。
- 若應用程式在測試電腦上順利執行,但無法在目的電腦上執行,您會知道是目的電腦有問題,而非應用程式。 您需要在目的電腦上找出可能原因並加以修正,這可能是由於檔案不相容或損毀。
重新整理參照清單
如果參照問題有關 ActiveX 控制項,有時您可以重新整理參照清單來解決問題。 若要重新整理參照清單:
- 在 Visual Basic 編輯器,按一下 [工具] 功能表上的 [參照]。
- 在 [參照] 對話方塊中,按一下以選取尚未選取的參照,記下選取的參照,然後按一下 [確定]。
- 在 [工具] 功能表上,再次按一下 [參照]。
- 點選以取消參照的選項,然後按一下 [確定]。
散佈具有 ActiveX 控制項的資料庫檔案
ActiveX 控制項有兩種授權類型:「設計階段授權」和「執行時間授權」。
- 設計階段授權可讓您在 Access 資料庫中的表單和報告中,插入來自 Office 2000 開發人員的 ActiveX 授權控制項。
- 執行時間授權可讓您在未安裝 Office 2000 開發人員的電腦上,使用 Access 資料庫中的 ActiveX 控制項,但執行時間授權不允許您插入新的授權 ActiveX 控制項。 若要安裝執行時間授權,請使用套件和部署精靈來散佈 ActiveX 控制項,這會寫入目標電腦登錄中控制項的授權。
遺漏的旗標,當您在設計檢視中開啟模組,然後按一下 [工具] 功能表上的 [參照]時,表示目的電腦上的一般對話方塊控制項參照與開發電腦上的資料庫檔案中的來源不相符。
如果您散佈資料庫檔案但未安裝可散佈的通用對話方塊控制項,則該控制項的參照可能會標示為遺失,否則您可能會收到錯誤訊息:「您沒有必要的授權,因此無法用此 ActiveX 控制項」(如果目標電腦上已安裝未散佈的控制項)。
即使當資料庫檔案是執行時間應用程式的一部分時,如果目標電腦上已安裝的非散佈控制項的版本比您的執行時間應用程式所提供的控制項的版本還高,您可能會收到錯誤訊息:「您沒有必要的授權,因此無法使用此 ActiveX 控制項」。 發生此問題的原因可能是安裝程式不會覆寫版本相同檔案的更新版本。
重新登錄檔案
檔案可能會出現在參照清單中,但不會在登錄中正確註冊。 如果您懷疑可能是這種情況,請遵循下列步驟以重新註冊檔案:
- 在 Microsoft Windows NT 4.0 中,點選 [開始],指向 [尋找],然後按一下 [檔案或資料夾],或在 Windows 2000,點選 [開始],指向 [搜尋],然後按一下 [檔案與資料夾]。
- 在 [已命名] 方塊中,或在 [搜尋檔案及資料夾名稱] 方塊中,輸入 regsvr32.exe。
- 在 [查找範圍] 方塊中,按一下硬碟的根目錄 (通常是 C: )。
- 若未選取 [包含子資料夾] 核取方塊,請按一下以選取該方塊,然後按一下 [確定] 或 [立即搜尋]。
- 找到檔案之後,按一下 [開始],按一下 [執行],然後刪除 [開啟] 方塊中的任何項目。
- 將 Regsvr32.exe 檔案從搜尋結果窗格拖曳至 [開啟] 方塊。
- 重複步驟 2 到 6,這次搜尋 FileName.dll,其中 FileName 是您要重新註冊的檔案名稱。
- 當 FileName.dll檔案位於 Regsvr32.exe 檔案的 [開啟] 方塊中,請按一下[確定]。
- 在 Access 中,請進行測試以查看問題是否仍存在。
如果您的電腦上沒有 Regsvr32.exe 檔案,請檢查其他電腦上的檔案。 如果無法使用檔案,您可以從 Microsoft 網站取得檔案。
注意事項
在調整參照之後,請記得先編譯所有模組。 若要編譯所有模組,模組仍為開啟狀態,請按一下 [偵錯]功能表上的 [編譯資料庫]。 如果模組不進行編譯,則可能會有其他未解決的參照。