引用链接表

时间:2012-11-14 18:42:04

标签: vba ms-access

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

    '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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

尝试使用

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

而不是

Set dbMine = CurrentDb

使用CurrentDb时遇到了类似的问题。根据{{​​3}},

  

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

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

相关问题