超出ACCESS 2010系统资源 [英] ACCESS 2010 System Resource Exceeded

查看:187
本文介绍了超出ACCESS 2010系统资源的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的团队正在使用Access 2000,那里有我们的MDB项目.该应用程序(ERP)可以打开大约20个访问表格.在决定将整个系统迁移到Access 2010后,将其迁移为新格式* .accdb;.我们现在内存不足,大约100 mb就会遇到麻烦.

My team were working with access 2000, where we have our MDB project. This application(ERP) could open around 20 access forms. After we decide migrate our entire system to Access 2010 to its new format, *.accdb; we are having this trouble with less memory, around 100mb nowadays.

是否有任何变通办法,我可以遵循的任何路径来增加我的Access 2010项目内存限制.

Is there any workaround, any path i could follow to increase my access 2010 project memory limit.

问题的流程:我们将登录名和密码放入初始表单中,然后开始打开表单(从字面上看是访问表单中的表单).当大约有10个表单时,访问权2010使用的内存达到107mb,而当我们打开下一个表单时,系统崩溃并显示以下错误:"3035说明系统资源已超出"

Problem's Flow: We put login and password in the initial form, and start opening forms(form from access forms, literally). When around 10 forms, the memory used by acess 2010 reachs 107mb, and when we open the next form, the system crash with the following error: "3035 Description System resource exceeded"

推荐答案

此问题是由32位访问超出了每个应用程序2GB的32位Windows虚拟内存限制引起的.我不知道为什么Windows XP上不会出现此问题(没有时间对其进行测试).

The issue is caused by 32 bit Access exceeding the 32 bit windows Virtual Memory limit of 2GB per app. I don't know why this issue does not crop up on Windows XP (didn't have time to test it).

您可以通过性能监视器或通过访问应用程序中的代码来跟踪VM使用情况.您会看到,随着表单的打开,虚拟机的使用量会逐渐增加,直到访问中断.

You can track VM usage either through Performance Monitor or through code in the access app. You will see that as forms open the VM usage creeps up until access balks.

解决方案是在Windows 64位上切换到Access 64位.请记住,如果您有外部dll调用,则需要将其重写为64位. ActiveX控件也必须是64位.

The solution is to switch to Access 64 bit on windows 64bit. Keep in mind that if you have external dll calls they need to be rewritten for 64 bit. Also ActiveX controls need to be 64 bit.

跟踪VM的代码

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

这篇关于超出ACCESS 2010系统资源的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆