我在MS Access数据库中有一个进程,用户通常每天运行一次,但可能更多或更少。它需要几分钟并且需要临时独占访问权限,因为它会删除并重新创建主表。
我有代码在流程启动之前检查数据库中是否有其他用户,但是有没有办法在开始时将访问权限更改为“exclusive”,然后将其更改回打开访问权限结束?
答案 0 :(得分:0)
Access仅在打开数据库时才设置独占/共享模式。因此,除非您有另一个打开/关闭的数据库,否则您无法“动态”执行此操作。
因此,您可以拥有一个“维护”数据库,用于在另一个数据库中删除和重新创建表 - 维护数据库可以以独占模式打开数据库。
BTW - 执行此操作可能不是一个好习惯 - 删除/重新创建表每次都会增加数据库的大小,并且您需要定期压缩以控制大小。如果可能,找到不需要此操作的不同设计。答案 1 :(得分:0)
如果使用/ excel命令行参数运行Access,它应该以独占模式打开数据库。
但是我不清楚你是否从Access这样做。
答案 2 :(得分:0)
您可以在隐藏表单上使用表格和计时器。计时器检查Access数据库中表的值。当该值被设置为将所有人踢出去时,它会将每个人踢出去。 隐藏表单的示例代码:
Private Sub Form_Timer()
'On Error GoTo Err_Handler
Dim fLogout As Boolean
'checks to see if the table is set to false
fLogout = DLookup("on_off", "tblAdminSettings", "Control = 'logoff?'")
If fLogout = True Then
'this is your timer it allows everyone to be logged off
T1 = Now()
T2 = DateAdd("s", 10, T1)
Do Until T2 <= T1
T1 = Now()
Loop
DoCmd.SetWarnings False
DoCmd.Quit
End If
Exit_Here:
Exit Sub
Err_Handler:
MsgBox Err.Description, vbExclamation, "Error Your Killing me Smalls"
Resume Exit_Here
End Sub
请记住确保在打开数据库时有办法将值设置为false,否则它将始终关闭。