内存不足,无法继续执行程序
Posted
技术标签:
【中文标题】内存不足,无法继续执行程序【英文标题】:Insufficient memory to continue the execution of the program 【发布时间】:2009-08-14 10:41:49 【问题描述】:我的应用程序(Vb.net,Access 2003/2007)是扫描 Access 数据库文件中的 activex 控件并生成相应的报告。
问题:
收到如下错误:
“。”
在扫描 Office 2000 之前的旧版本 Access 文件时出现上述错误。
我得到这个的代码行如下:
Dim oForm As Access.Form
Dim oAccess as Access.Application
oForm = oAccess.Forms(objForms.Name)
但它也会打开文件和表单。
需要帮助:
是否可以读取文件(访问表单和报告)?
请提供参考或任何解决方案。
【问题讨论】:
出现该错误时已经打开了多少个表单?完成处理后,是否关闭表单? 【参考方案1】:您似乎在做 Access 的 COM 自动化以打开表单,然后循环通过它们的控件来查找某些属性。
另一种解决方案也将涉及自动化 Access,但它不需要实际打开表单,这就是未记录的 Application.SaveAsText 命令。你会做这样的事情:
Application.Saveastext acForm, "dlgWebBrowser", _
"C:\Output\dlgWebBrowser.txt"
然后您必须弄清楚该文件中如何描述 ActiveX 控件。如果该文件看起来像 VB 表单的代码,那是因为它就是这样。
上面的例子有一个 IE web 浏览器控件,在转储 OLE 数据后,它里面有这个:
OLEClass ="Microsoft Web Browser"
Class ="Shell.Explorer.2"
GUID = Begin
0x54c1ea41936d2046b9dc5b29905976e3
End
我希望所有 ActiveX 控件都有一个 OLEClass,但我原则上避免使用 ActiveX 控件,因为如果在您尝试运行应用程序时未正确安装它们可能会导致问题。
事实上,这可能是问题的根源——如果您在没有注册相关 ActiveX 控件的机器上打开 Access 表单,它将失败,并且表单将无法打开。
我敢打赌,Application.SaveAsText 将完全回避这个问题,因为不必打开表单。
【讨论】:
【参考方案2】:我以前见过与此非常相似的行为。如果您尝试在 RAM 超过(我认为)1Gb 的计算机上打开 Access 97 文件,有时会报告“内存不足”错误。错误并不总是立即显现 - 有时项目看起来运行正常,但在您尝试打开特别大的对象时会崩溃。
在我们确实遇到这种情况的情况下,用户在新的 XP 计算机上运行旧的 Access 97 数据库,他们已升级到具有现代 RAM 量的计算机。该公司的技术支持尝试了他们能想到的一切——包括完整的办公室重新安装、应用所有补丁等,但最终不得不求助于从计算机中删除 RAM——于是错误消失了,一切都恢复了坚如磐石。我不确定确切的原因,但它将与 Access 97 文件格式的内存管理有关(我相信该错误在 MSDN 上的某个地方,但我没有直接参与技术支持寻找解决方案 - 我会多年前刚写的申请)
我建议您唯一的出路是使用特殊的低内存 PC 来运行应用程序。
【讨论】:
实际上,Office 97 的 1 Gb RAM 问题可以通过 Jet 3.51 启动 Microsoft Access (97) support.microsoft.com/?kbid=161255 时出现“内存不足”错误来解决。无论如何,这是一个好主意,因为 Jet 更稳定。以上是关于内存不足,无法继续执行程序的主要内容,如果未能解决你的问题,请参考以下文章