我的团队正在使用 access 2000,我们在那里有我们的 MDB 项目。这个应用程序(ERP)可以打开大约 20 个 Access 表单。在我们决定将我们的整个系统迁移到 Access 2010 后,使用它的新格式 *.accdb;我们在内存较少的情况下遇到了这个问题,现在大约 100mb。
是否有任何解决方法,我可以遵循的任何路径来增加我的 Access 2010 项目内存限制。
问题流程:我们将登录名和密码放在初始表单中,然后开始打开表单(从 Access 表单中获取的表单,字面意思)。当大约10个表单时,access 2010使用的内存达到107mb,当我们打开下一个表单时,系统崩溃并出现以下错误:“3035 描述系统资源超出”
最佳答案
该问题是由 32 位 Access 超过每个应用程序 2GB 的 32 位 Windows 虚拟内存限制引起的。我不知道为什么这个问题在 Windows XP 上没有出现(没有时间测试)。
您可以通过性能监视器或 Access 应用程序中的代码跟踪 VM 使用情况。您会看到,随着表单打开,VM 使用率逐渐上升,直到 Access 受阻。
解决方法是在windows 64bit 上切换到Access 64 位。请记住,如果您有外部 dll 调用,则需要将它们重写为 64 位。此外,ActiveX 控件需要为 64 位。
跟踪虚拟机的代码
Declare PtrSafe Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MEMORYSTATUS)
Public Type MEMORYSTATUS
dwLength As Long
dwMemoryLoad As Long
dwTotalPhys As Long
dwAvailPhys As Long
dwTotalPageFile As Long
dwAvailPageFile As Long
dwTotalVirtual As Long
dwAvailVirtual As Long
End Type
Function ReturnVirtualMemory() As Long
Dim Mem as MEMORYSTATUS
Mem.dwLength = Len(Mem)
GlobalMemoryStatus Mem
ReturnVirtualMemory = Mem.dwTotalVirtual - Mem.dwAvailVirtual
End Function
关于forms - ACCESS 2010 系统资源超标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19550367/