0

有没有办法编写一个在将更改提交到 Access DB 之前运行的钩子?如果特定进程当前正在查询数据库,我正在寻找一种阻止更改的方法。

4

1 回答 1

1

你没有给我们太多的信息来处理。您能否调整诸如创建和使用灵活自动编号字段之类的内容,以便特定流程首先专门打开一个表?然后任何其他可能更改数据的操作都必须等到他们可以锁定同一个表。

具体流程是什么?您是否有一种方法来确定何时/是否从您的数据库中读取数据?

如果特定进程在数据库外部,例如使用 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
于 2010-06-16T16:25:56.400 回答