通过ODBC管理器的DAO连接在VBA中无法关闭

时间:2019-05-31 07:04:23

标签: excel vba odbc ado dao

我正在使用以下代码创建DAO连接:

  Set myWorkspace = DBEngine.CreateWorkspace("MYAPP", "admin", "")

   Set DB = myWorkspace.OpenDatabase(DBName, dbDriverNoPrompt, True, IDatenbank_BuildConnectionString(ODBCConnection))


  IDatenbank_BuildConnectionString = "ODBC" & _
                                    ";DSN=" & ODBCConnection.Name & _
                                    ";Uid=" & ODBCConnection.User & _
                                    ";Pwd=" & ODBCConnection.Password

其中

> IDatenbank_BuildConnectionString = ODBC;DSN=US Company Int;Uid=ALA1Bala;Pwd=hihihi

然后执行以下代码以关闭连接:

 Set myWorkspace = Nothing

 Set DB = Nothing

DB.Close()

我面临的问题是,即使将DB对象设置为null,连接也不会关闭。由于先前的原因,当新用户登录时,旧的凭据将用于连接,并且使用先前连接的属性创建连接对象。连接会话似乎存在于Oracle数据库上。

请提供有关如何在使用DAO驱动程序时真正破坏连接的建议。而且,我不得不提到,可以通过使用ADO连接来使用替代日志记录选项,并且我没有遇到类似的问题,并且该连接正在关闭并完全重新创建。

1 个答案:

答案 0 :(得分:1)

我可以用另一种方式创建连接,然后关闭连接:

Dim DB as DAO.Database
Dim DBE as DBEngine

Set DBE = new DBEngine
Set DB = DBE.Workspaces(0).OpenDatabase(DBName, dbDriverNoPrompt, true, IDatenbank_BuildConnectionString(ODBCConnection))

Call DB.Close
Set DB = Nothing
Set DBE = Nothing

要在SQL Developer中签入您是否有活动的会话,请执行以下操作:

select * from v$session where username='<enter_your_username>'