【发布时间】:2011-05-06 00:32:02
【问题描述】:
我的 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.
我已将数据库表单的记录锁定设置为“无记录锁定”,但这没有帮助。
非常感谢任何建议或帮助。
干杯 诺埃尔
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 与未保存的结构数据(表单、查询、代码等)一起使用时生成的标准错误。
-
@Remou 是的,我已经保存了所有表单代码等......我认为当用户在表单上输入数据并保存记录时会出现问题(比如使用'ctrl + S')并保持记录公开。如果用户避免这样做,似乎没有问题。
-
Ctrl-S 不保存记录——它保存了表格,这将导致@Remou 建议的问题。唯一的例外是,如果您使用自定义操作覆盖了 Ctrl-S 的默认定义。
-
@David Yep 这似乎是问题所在。拆分数据库解决问题
标签: excel ms-access-2007 excel-2007 vba