我在我的Excel工作簿中有一个宏,用于更新与电子表格相关的访问数据库中的特定记录。从Excel工作表更新Access 2007数据库中的记录
所有工作正常,如果访问数据库关闭。出现问题如果在数据库打开和用户正在编辑的Excel电子表格涉及to.` 特定记录我得到以下错误信息:
Error Number 2147467259:
The database has been paced in a state by user 'ADMIN' on
'LAPTOP' that prevents it from being opened or locked.
我已经设置了数据库表格的记录锁定为“无记录锁',但这并没有帮助。
任何意见或帮助,不胜感激。
干杯 诺尔
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
在尝试此操作之前是否保存了所有代码和查询?这是将ADO与未保存的结构化数据(表单,查询,代码等)一起使用时产生的标准错误。 – Fionnuala 2010-11-07 10:52:17
@Remou是的,我保存了所有的表格代码等......我认为当用户在窗体上输入数据并保存记录(例如使用'ctrl + S')并保持记录打开时会出现问题。如果用户避免这样做,这似乎不成问题。 – noelmcg 2010-11-07 11:57:40
Ctrl-S不保存记录 - 它保存了FORM,这会引起@Remou建议的问题。唯一的例外就是如果你用自定义动作覆盖了Ctrl-S的默认定义。 – 2010-11-08 01:25:57