2017-08-29 640 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

相关问题