2

トランザクション内で単純な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

なぜこれが起こっているのか、どうすれば回避できるのか考えてください。

4

1 に答える 1

0

テーブル全体を更新しているようです。つまり、where条件なしで、テーブル全体を更新してもよろしいですか。テーブル全体をループで更新している場合(コードにループが表示されませんが、これを呼び出している可能性があります)ループ内の手順) システムでは、このエラーが発生する可能性が高くなります。

于 2012-09-03T09:34:29.730 に答える