首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Excel连接时,BE Access DB膨胀

从Excel连接时,BE Access DB膨胀
EN

Stack Overflow用户
提问于 2020-01-27 06:32:39
回答 1查看 70关注 0票数 1

我有一个Access应用程序split FE/BE,它导入数据并将报告导出到Excel xlsm文件。用户在Excel报告中执行各种操作,将记录添加到BE DB。到BE DB的所有连接都是打开和关闭的,并且在关闭数据库连接并将其设置为空之前,记录集也会关闭。BE有密码保护,我每天大约有20个活跃用户。

后端数据库在白天使用时会变得臃肿,每晚都需要压缩。我正在尝试隔离后端增长的原因。在白天,它将从10mb增长到一天结束时超过100mb。

膨胀是由Excel链接引起的,如果在Access中完成了所有操作,BE DB只会增加几kb。

我在这里和谷歌上发现了许多帖子,但找不到任何让数据库保持正常大小的建议。我知道删除和添加记录会导致臃肿,但我们每天只增加几百条记录。

示例Excel代码:我们使用五个Excel报表。这些报告被打开,并且宏每天大约调用100次。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2020-01-27 19:11:44

似乎你打开和关闭数据库的每一个循环都可能是一个问题。

但您可能希望以这种方式使用代码。

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59923360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档