动态更改MS Access to Exclusive

时间:2009-05-21 16:08:28

标签: ms-access

我在MS Access数据库中有一个进程,用户通常每天运行一次,但可能更多或更少。它需要几分钟并且需要临时独占访问权限,因为它会删除并重新创建主表。

我有代码在流程启动之前检查数据库中是否有其他用户,但是有没有办法在开始时将访问权限更改为“exclusive”,然后将其更改回打开访问权限结束?

3 个答案:

答案 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,否则它将始终关闭。