Ms access 动态将MS访问更改为独占

Ms access 动态将MS访问更改为独占,ms-access,Ms Access,我在MS Access数据库中有一个进程,用户通常每天运行一次,但可以或多或少运行。它需要几分钟,并且需要临时独占访问,因为它会删除并重新创建主表 在进程开始之前,我需要检查数据库中是否有其他用户,但是否有办法在开始时将访问权限更改为独占,然后在结束时将其更改回开放访问?access仅在打开数据库时设置独占/共享模式。因此,除非您有另一个数据库执行打开/关闭操作,否则这不是您可以随时执行的操作 因此,您可以拥有一个维护数据库,该数据库可以在另一个数据库中删除和重新创建表-维护数据库可以以独占模式

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


在进程开始之前,我需要检查数据库中是否有其他用户,但是否有办法在开始时将访问权限更改为独占,然后在结束时将其更改回开放访问?

access仅在打开数据库时设置独占/共享模式。因此,除非您有另一个数据库执行打开/关闭操作,否则这不是您可以随时执行的操作

因此,您可以拥有一个维护数据库,该数据库可以在另一个数据库中删除和重新创建表-维护数据库可以以独占模式打开数据库


顺便说一句——这样做可能不是一个好的做法——删除/重新创建表每次都会增加数据库的大小,并且需要定期压缩以控制大小。如果可能,请找到不需要此操作的其他设计。

如果使用/excl命令行参数运行Access,则应以独占模式打开数据库


但我不清楚您是否通过Access执行此操作。

您可以在隐藏窗体上使用表和计时器。计时器检查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,否则它将始终关闭

你到底为什么要删除并重新创建主表?好的,谢谢。我这样做是因为每天有20000多条记录被删除和重新加载,而且大小的增加比仅仅删除记录然后添加新记录要小得多。速度也快很多倍。偶尔签订合同没什么大不了的。再次感谢。