Die*_*ira 3 forms ms-access vba ms-access-2010
我的团队正在使用 access 2000,我们在那里有我们的 MDB 项目。这个应用程序(ERP)可以打开大约 20 个访问表单。在我们决定将我们的整个系统迁移到 Access 2010 后,使用它的新格式 *.accdb;我们在内存较少的情况下遇到了这个问题,现在大约 100MB。
是否有任何解决方法,我可以遵循的任何路径来增加我的访问 2010 项目内存限制。
问题流程:我们将登录名和密码放在初始表单中,然后开始打开表单(从访问表单中获取的表单,字面意思)。当大约10个表单时,access 2010使用的内存达到107mb,当我们打开下一个表单时,系统崩溃并出现以下错误:“3035 Description System resource exceeded”
该问题是由 32 位访问超过每个应用程序 2GB 的 32 位 Windows 虚拟内存限制引起的。我不知道为什么这个问题在 Windows XP 上没有出现(没有时间测试)。
您可以通过性能监视器或访问应用程序中的代码跟踪 VM 使用情况。您将看到,随着表单打开,VM 使用率逐渐上升,直到访问受阻。
解决办法是在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
Run Code Online (Sandbox Code Playgroud)