有没有办法编写一个在将更改提交到Access数据库之前运行的挂钩?如果特定进程当前正在查询数据库,我正在寻找阻止更改的方法。
答案 0 :(得分:1)
您没有给我们提供太多信息。你可以改编一下像Create and Use Flexible AutoNumber Fields这样的特定过程首先打开一个表吗?然后,任何其他可能更改数据的操作都必须等到它们可以锁定同一个表。
什么是特定流程?您是否有方法确定何时/是否从数据库中读取数据?
如果特定进程在数据库外部,例如使用ADO获取数据的Web服务器ASP代码,您可以看到ADO连接模式和IsolationLevel属性是否有帮助。
更新:我使用表单来试验ADO连接的adModeShareDenyWrite Mode属性。表单打开时,其他用户可以打开数据库,但不进行任何更改。但是,如果另一个用户在表单尝试打开连接时已经打开了数据库,则会触发错误。
也许您的部署脚本可能会尝试打开adModeShareDenyWrite连接,并在出错时挽救。
Option Compare Database
Option Explicit
Dim cn As ADODB.Connection
Private Sub Form_Close()
If Not (cn Is Nothing) Then
cn.Close
Set cn = Nothing
End If
End Sub
Private Sub Form_Load()
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=\\Cmpq\export\Access\backend\links2003.mdb;" & _
"User Id=admin;Password=;"
cn.Mode = adModeShareDenyWrite
cn.Open
End Sub