2017-08-29 98 views
-3

美好的一天。我有一個問題,我根本無法解決。我正在從一個Excel程序中檢索數據並更新MS Access 2010數據庫。我使用ADODB.Connection與數據庫連接,文件(access.accdb)駐留在文件服務器中。當應用程序首次啓動時,它使用form1從用戶獲取登錄詳細信息,並檢查用戶標識是否存在於數據庫中。這個函數駐留在一個模塊中並且工作正常。當我嘗試從另一個用戶窗體(窗體2)中的子窗體打開同一個文件時,我總是收到錯誤,指出找不到該文件。我正在使用與模塊中使用的完全相同的路徑字符串,只是這次使用的是從用戶表單中使用的字符串。以下是Module2中的代碼:VBA運行時錯誤:無法找到文件

Dim con As Object 
Dim rs As Object 
Dim path As String 
path = "path.accdb" 
Set con = CreateObject("ADODB.Connection") 
Set rs = CreateObject("ADODB.Recordset") 
with con 
.Provider = "Microsoft.ACE.OLEDB.12.0" 
.ConnectionString = "Data Source = " & path & "; Jet OLEDB:Database Password = pwd" 
.Open 

這工作正常。 我只使用相同的用戶窗體並且沒有記錄集對象。我不是從表單中檢索數據,而是更新數據庫。該表單僅用於數據捕獲。

任何幫助將不勝感激。謝謝。

這是我使用form1的內部代碼:

Dim conn As Object 
Dim strPath As String 
strPath = "path.accdb" 'same as the path I used from within Module2 
Set conn = CreateObject("ADODB.Connection") 
with conn 
.Provider = "Microsoft.ACE.OLEDB.12.0" 
.ConnectionString = "Data Source = " & strPath & "; Jet OLEDB:Database Password = pwd" 
.Open 'this is where I get the error. 
'Rest of code 

錯誤消息: 運行時錯誤「2147467259(80004005): 找不到文件 'path.accdb'

我檢查了路徑,它是正確的。我已檢查缺少的參考。我還必須提到,數據庫文件位於我有權訪問的公司文件夾上的文件夾中。

+2

請添加完整的代碼*,不起作用*您的問題。如果有保密的表/字段名稱,請更改它們,但要確保問題仍然存在(向您的數據庫中添加一個虛擬「myTable」)。請參閱[mcve] – Andre

+0

您可能需要完整的路徑/文件名,而不僅僅是您的「路徑」,實際上它只是文件名。 – Gustav

回答

0

簡單的語法問題:

您聲明strPath

Dim strPath As String 
strPath = "path.accdb" 'same as the path I used from within Module2 

但後來你打電話Path代替:

.ConnectionString = "Data Source = " & path & "; Jet OLEDB:Database Password = pwd" 

,當我們周圍的拼寫切換它發生在我們所有的變量:)

** 編輯 **

好吧......讓我們嘗試不同的東西......

你爲什麼不打開你的數據庫只有一次進入一個全局變量?

也許在一個子窗體中第二次打開它與您與數據庫的初始連接有點衝突。

特別是因爲你沒有告訴我們代碼你關閉連接的地方。

很多線索都在你真實的代碼中,你沒有向我們展示。如果製作全局變量不起作用,您可能需要向我們顯示您的真實代碼,只更改敏感信息。

+0

感謝您的回覆,不幸的是,這不是問題。儘管我的帖子中的變量名稱不同(現在會更正它),但在我的實際代碼中這不是問題☺ – user3452354

+1

@ user3452354:這正是您發佈的截斷/編輯代碼的問題。該問題不能從該片段重現。再次:閱讀[mcve]特別關注** Complete **和** Verifiable **。 – Andre