我构建了一个多用户数据库,它使用SharePoint列表作为链接表和Access中的字体结束应用程序。我们总共有大约40个用户。一切都很好,但是这些列表变得非常庞大,因此性能受到了冲击。例如,登录可能需要一分钟,因为它在大型表上运行一些查询。
我认为我的问题的答案是缓存。当我启用'使用与MS Access 2010及更高版本兼容的缓存格式'时,性能提升(在第一个缓存之后)非常棒。但是,在写入各种表时会导致错误。错误是运行时3167'记录被删除',调试将我带到记录集的rs.update行。
谷歌搜索错误似乎表明该问题是一个需要压缩和修复的损坏的数据库。但是,如果我除了关闭缓存之外什么都不做,它可以正常工作。并且错误发生在多个表上,一些大而一些小。所以我认为它与缓存直接相关。
我(几乎)肯定这个问题是由更新的缓存版本引起的,然后不再与在线版本对齐。我已经限制了索引的数量以降低风险(我在某处可以看到这有帮助),但显然仍然将ID作为索引。
必须有一些方法来处理我的记录集或缓存/在线表来阻止这种情况发生(比如在更新前确保两个对齐,或以特定方式打开我的记录集),但我已达到极限我的知识,并可以在正确的方向推动!
这是我处理记录更新的方式(我已重命名表/字段) -
Sub Update_Table(Success As String)
With Forms!Frm_Main
'/ open recordset as table
Set db = CurrentDb()
Set rs = db.OpenRecordset("table", dbOpenDynaset)
rs.AddNew
'/ update record with form details
rs![Field1] = !txtField1
rs![Field2] = !txtField2
rs![Field3] = !txtField3
'/ update and close recordset
rs.Update
rs.Close
Set rs = Nothing
Set db = Nothing
End With
End Sub