我的excel工作簿中有一个宏,用于更新与电子表格相关的访问数据库中的特定记录。
如果访问数据库已关闭,则一切正常。如果数据库处于打开状态且用户正在编辑excel电子表格所涉及的特定记录,则会出现问题 我收到以下错误消息:
Error Number 2147467259:
The database has been paced in a state by user 'ADMIN' on
'LAPTOP' that prevents it from being opened or locked.
我已将数据库表单的Record Locks设置为'No Record Locks',但这没有帮助。
非常感谢任何建议或帮助。
干杯 诺尔
Public Sub updateAccessRecord()
On Error GoTo ProcError
Dim subFuncName As String
subFuncName = "updateAccessRecord"
Dim conn As ADODB.Connection
Dim cmd As ADODB.Command
Dim rst As ADODB.Recordset
Dim dbName As String
Dim dbPath As String
Dim strCon As String
Dim recID As Long
Dim fieldVal As Double
Dim strSQL As String
fieldVal = Worksheets("House Claim").Cells(593, 10).Value
dbName = "claim-db.mdb"
dbPath = ThisWorkbook.Path & "\..\..\..\..\"
dbPath = dbPath & "\" & dbName
strSQL = "UPDATE tblInsClaimDet SET propSet=" & fieldVal & " WHERE ID=" & recID & ""
Set conn = New ADODB.Connection
With conn
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & dbPath
.Open
End With
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = conn
.CommandText = strSQL
End With
Set rst = cmd.Execute
Set rst = Nothing
conn.Close
Set conn = Nothing
ExitProc:
Exit Sub
ProcError:
MsgBox "Error " & Err.Number & ": " & Err.Description, _
vbCritical, "Error in procedure in " & subFuncName
Resume ExitProc
End Sub
答案 0 :(得分:1)
您似乎没有将数据库拆分为前端和后端。如果你这样做,问题就会消失。 Ctrl + S不用于保存记录,即Shift + Enter,它用于保存数据库对象,因此它似乎具有将数据库置于设计或开发状态的效果。
答案 1 :(得分:0)
在宏观方面;您是否尝试以只读方式打开连接?即使您的Access用户没有锁定记录,他在记录上也有一个“读锁定”,从而阻止了excel的独占锁定。我想如果两个用户都只是尝试只读取访问权限,那么你应该是好的;但如果其中任何一个正在进行读/写操作,那么它将失败。
在您的访问表单上,您还应该:
Me.AllowAdditions = True
Me.AllowDeletions = False
Me.AllowEdits = False
答案 2 :(得分:0)
问题可能不在您的代码中。错误:
数据库已经在一个州的节奏
表示数据库已以独占模式打开。您应该检查如何打开数据库。