Microsoft Access VBA,压缩n修复,数据库损坏

时间:2019-07-26 01:30:13

标签: vba ms-access

我正在处理具有150万条记录的表,我需要对数据进行大量修改。

由于我需要使整个过程自动化,因此我试图通过一次调用所有子项将所有步骤置于一个命令按钮下。

但是,由于数据的大小,运行一个子例程后,访问数据库的大小将达到2GB(最大限制),甚至无法完成运行一个子例程。

我附加了一个子目录,该子目录通常会导致数据库损坏,因为文件大小会在一半时达到2GB,然后停止运行。

我真的需要帮助,会感谢任何人的帮助!

Sub cogsinout()

Dim db As DAO.Database
Dim rs As DAO.Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("Final")

rs.MoveFirst
Do Until rs.EOF
  If (rs!El = "BA") Or (rs!El= "BE") Or (rs!El = "FE") Or (rs!El = "LA") Or (rs!El = "LB") Or (rs!El Then
     rs.Edit
     rs!cogs = "COGS IN"
     rs.Update
    Else

             rs.Edit
     rs!cogs = "COGS OUT"
     rs.Update

   End If
   rs.MoveNext
   Loop

   End Sub

1 个答案:

答案 0 :(得分:1)

尝试使用此功能更新表, 看来用这种方法,数据库不那么肿。

Sub cogsinoutNew()

Dim strSQL As String
Dim db As DAO.Database: Set db = CurrentDb

strSQL = "UPDATE Final SET cogs = 'COGS OUT' WHERE El Not In ('BA','BE','FE','LA','LB');"
db.Execute strSQL, dbFailOnError

strSQL = "UPDATE Final SET cogs = 'COGS IN' WHERE El In ('BA','BE','FE','LA','LB');"
db.Execute strSQL, dbFailOnError

Set db = Nothing

End Sub