我有一个Access应用程序split FE/BE,它导入数据并将报告导出到Excel xlsm文件。用户在Excel报告中执行各种操作,将记录添加到BE DB。到BE DB的所有连接都是打开和关闭的,并且在关闭数据库连接并将其设置为空之前,记录集也会关闭。BE有密码保护,我每天大约有20个活跃用户。
后端数据库在白天使用时会变得臃肿,每晚都需要压缩。我正在尝试隔离后端增长的原因。在白天,它将从10mb增长到一天结束时超过100mb。
膨胀是由Excel链接引起的,如果在Access中完成了所有操作,BE DB只会增加几kb。
我在这里和谷歌上发现了许多帖子,但找不到任何让数据库保持正常大小的建议。我知道删除和添加记录会导致臃肿,但我们每天只增加几百条记录。
示例Excel代码:我们使用五个Excel报表。这些报告被打开,并且宏每天大约调用100次。
Dim db As DAO.Database, rstJournal As DAO.Recordset
Set db = DAO.OpenDatabase(tmpDir & "DBname.accdb", False, False, "MS Access;PWD=Password")
Set rstJournal = db.OpenRecordset("Select * from tblJournal", Options:=dbAppendOnly)
rstJournal.AddNew
rstJournal!J_Name = ActiveCell.Offset(i, 1).Value
...
RstJournal.Update
If Not rstJournal Is Nothing Then rstJournal.Close
If Not db Is Nothing Then db.Close
Set rstJournal = Nothing
Set db = Nothing发布于 2020-01-27 19:11:44
似乎你打开和关闭数据库的每一个循环都可能是一个问题。
但您可能希望以这种方式使用代码。
Const dbFailOnError = 128
Dim db As DAO.Database
Dim strSQL As String
Set db = DAO.OpenDatabase(tmpDir & "DBname.accdb", False, False, "MS Access;PWD=Password")
For I = 0 To ActiveSheet.Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row
strSQL = "INSERT INTO tblJournal ( J_Name , field2 ) "
strSQL = strSQL & "SELECT '" & ActiveCell.Offset(I, 1).value & "', '" & ActiveCell.Offset(I, 2).value & "'"
' If next line throw an error then use it without dbFailOnError and disable this one
db.Execute strSQL, dbFailOnError
' db.Execute strSQL
Next I
If Not db Is Nothing Then db.Close
Set db = Nothing很抱歉,您没有提供字段名称。所以我使用了field2表单
Asaf
https://stackoverflow.com/questions/59923360
复制相似问题