我有一个Access数据库,我使用传递查询填充
我从SQL数据库中获取特定数据并将其转储到Access上
此Access数据库每周更新一次,但我不能简单地附加前一周的新数据,因为过去几周所有其他数据也都会更新。
我所做的是截断 Access DB,然后再次加载所有内容 当我这样做时,我需要压缩和修复数据库,这样尺寸就不会膨胀。
我的问题是,这样做可以吗?目前我正在使用此answer中发布的逻辑 我还没有遇到任何问题,但我只是想确保并获得我们的访问大师的想法。我还计划在我们的服务器上进行预定的运行来完成任务 只需要确保它不会轻易被破坏(首先破坏文件的可能性是什么?)。
如果您问,为什么我需要这样做?数据用户无权访问SQL服务器。
因此我必须为他们提取数据,以便他们可以直接连接到Access DB。
以防您需要代码:
Dim sqlDelete As String
Dim sqlAppend As String
sqlDelete = "DELETE * FROM dbo_Table;"
sqlAppend = "INSERT INTO dbo_Table (Col1,Col2) SELECT Col1,Col2 FROM passThrough;"
With DoCmd
.SetWarnings False
.RunSQL sqlDelete
.RunSQL sqlAppend
.SetWarnings True
End With
Application.SetOption "Auto Compact", True
答案 0 :(得分:2)
如果你需要截断数据并再次加载,我建议移动所有表,这些表应该被截断,所有临时表都要分开数据库。 分离后,可以在应用程序启动时用空数据库文件用不必要的数据替换此数据库。只需保存空数据库的副本,并使用旧数据将此文件复制到现有数据库上。这应该在根据临时数据库中的表打开任何表单/记录集之前完成。它每次都比C& R工作得更快,更可靠,因为有时C& R可能会损坏文件。
模板数据库文件也可以存储在备注字段
中的主数据库中答案 1 :(得分:0)