我的数据库存在问题。我有多个共享同一个用户和密码池的访问数据库。它们通过链接表将用户和密码表引用到“主”数据库(保存用户和密码表的后端)。我还有一个表存储当前用户和他们登录的数据库。我遇到的问题是我的注销方法实际上没有记录它们。这是粗略的:
'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
问题是,记录似乎没有删除。我是否需要将数据库对象设置为源表而不是引用运行代码的数据库中存在的链接表?如果是这样,我是否只通过相对路径引用该数据库?
答案 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处理“当前数据库的新实例”的方式上存在一些细微差别。