0

我的数据库有问题。我有多个共享相同用户和密码池的访问数据库。他们通过链接表将用户和密码表引用到“主”数据库(保存用户和密码表的后端)。我还有一个存储当前用户和他们登录的数据库的表。我遇到的问题是我的注销方法实际上并没有将它们注销。大致是这样的:

    'this code is run on click of exit button

 Public Sub logout(UserName As String, database As String)

 On Error Resume Next

 Dim dbMine As DAO.database
 Set dbMine = CurrentDb

 Dim qr As String

   qr = "DELETE * FROM tblCurrentUsers WHERE username = '" & UserName & "' AND       Database        = '" & database & "' ;"
    'debug.print qr
   dbMine.Execute qr


  Application.Quit

 End Sub

问题是,记录似乎没有被删除。我是否需要将我的数据库对象设置为源表,而不是引用运行代码的数据库中存在的链接表?如果是这样,我是否只是通过相对路径引用该数据库?

4

2 回答 2

0

dbFailOnError执行查询时添加选项以捕获错误详细信息。看看你得到了什么错误;这可以帮助您解决问题。

Public Sub logout(UserName As String, database As String)
On Error GoTo mError:
Dim dbMine As DAO.database
Set dbMine = CurrentDb
Dim qr As String
   qr = "DELETE * FROM tblCurrentUsers WHERE username = '" & UserName & "' AND Database = '" & database & "' ;"
    'debug.print qr
   dbMine.Execute qr, dbFailOnError
  Application.Quit
Exit Sub
mError:
  MsgBox "Error: " & Err.Description
End Sub
于 2012-11-14T18:54:59.157 回答
0

尝试使用

Set dbMine = DBEngine.Workspaces(0).Databases(0)

代替

Set dbMine = CurrentDb

我在使用 CurrentDb 时遇到了类似的问题。根据http://msdn.microsoft.com/en-us/library/office/bb237861(v=office.12).aspx

CurrentDb 方法创建当前数据库的另一个实例,而 DBEngine.Workspaces(0).Databases(0) 语法引用当前数据库的打开副本。

也许 DAO 或 Access 处理“当前数据库的新实例”的方式存在一些细微差别。

于 2012-11-14T21:30:47.287 回答