从Excel工作表更新Access 2007数据库中的记录时出现问题

时间:2010-11-06 13:14:39

标签: excel-vba ms-access-2007 excel-2007 vba excel

我的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 

3 个答案:

答案 0 :(得分:1)

您似乎没有将数据库拆分为前端和后端。如果你这样做,问题就会消失。 Ctrl + S不用于保存记录,即Shift + Enter,它用于保存数据库对象,因此它似乎具有将数据库置于设计或开发状态的效果。

答案 1 :(得分:0)

在宏观方面;您是否尝试以只读方式打开连接?即使您的Access用户没有锁定记录,他在记录上也有一个“读锁定”,从而阻止了excel的独占锁定。我想如果两个用户都只是尝试只读取访问权限,那么你应该是好的;但如果其中任何一个正在进行读/写操作,那么它将失败。

在您的访问表单上,您还应该:

Me.AllowAdditions = True

Me.AllowDeletions = False

Me.AllowEdits = False

答案 2 :(得分:0)

问题可能不在您的代码中。错误:

  

数据库已经在一个州的节奏

表示数据库已以独占模式打开。您应该检查如何打开数据库。