【问题标题】:System Resources Exceeded whilst performing UPDATE SQL in Access inside Transaction在事务内部的 Access 中执行 UPDATE SQL 时超出系统资源
【发布时间】:2012-08-26 10:38:33
【问题描述】:

我正在事务中执行一个简单的UPDATE tblTable SET DataSet=3,但在尝试运行它几秒钟后,我得到一个 3035 - 超出系统资源。大约有 30K 行。

Dim db As DAO.Database, wrk As DAO.Workspace, errCount As Long, stSQL As String

Set db = CurrentDb
Set wrk = DBEngine.Workspaces(0)
errCount = 0
wrk.BeginTrans
    Debug.Print "There are no existing entries in the selected DataSet, preparing to proceed..."
    ' - -- ---
    stSQL = "UPDATE tblImportCleaned SET DataSetID=" & Me.lstDataSets
    db.Execute stSQL, dbSeeChanges
    If db.RecordsAffected < 1 Then errCount = errCount + 1
    Me.frmImport_CleanedSubform.Requery
    ' - -- ---

If errCount = 0 Then
    If MsgBox("There were no errors, would you like to COMMIT the changes?", vbYesNo) = vbYes Then
        wrk.CommitTrans
    Else
        wrk.Rollback
    End If
Else
    wrk.Rollback
End If
wrk.Close

请知道为什么会发生这种情况以及如何避免它。

【问题讨论】:

  • 表是 MS Access 还是从另一个 DB 链接?
  • 如果是MS Access,是因为Transactions,但我不知道如何避免问题,但保留交易。
  • 是的,它们是 MS Access 表。
  • 有一个帖子我记不太清了,如果您正在更新,Access 在更新期间需要双倍的空间(记录数)。我怀疑您可能超出了记录限制,但我目前无法找到详细信息。
  • 我会仔细阅读其他帖子,如果你解决了请告诉我;)

标签: vba transactions ms-access-2010


【解决方案1】:

您似乎正在更新整个表格,即没有 where 条件,您确定要更新整个表格吗?如果您在循环中更新整个表格(我在您的代码中看不到循环,但您仍然可以循环调用此过程)系统很可能会出现此错误。

【讨论】:

  • 是的,我希望更新整个表,不,它不在循环中。
猜你喜欢
  • 2013-11-02
  • 1970-01-01
  • 2016-08-11
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多