内存不足,无法继续执行程序

时间:2009-08-14 10:41:49

标签: vb.net ms-access

我的应用程序(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)

但它也会打开文件和表单。

需要帮助:

是否可以读取文件(访问表单和报告)?

请提供参考或任何解决方案。

2 个答案:

答案 0 :(得分:2)

您似乎正在执行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表单,它将失败,并且表单将无法打开。< / p>

我敢打赌,Application.SaveAsText将完全回避这个问题,因为不需要打开表单。

答案 1 :(得分:1)

我之前看到的行为与此非常相似。如果您尝试在具有超过(我认为)1Gb RAM的计算机上打开它们,Access 97文件有时会报告“内存不足”错误。错误并不总是立即显现出来 - 有时项目可能看起来正常运行但在尝试打开特别大的对象时崩溃。

在我们遇到这种情况的情况下,用户在新的XP机器上运行旧的Access 97数据库,他们已经升级到现代数量的RAM。对该公司的技术支持尝试了他们能想到的一切 - 包括完整的办公室重新安装,应用所有补丁等但最终不得不求助于从计算机中移除RAM - 于是错误消失了,一切都再次坚如磐石。我不确定确切的原因,但它将与Access 97文件格式的内存管理相关联(我相信错误是在某个地方的MSDN,但我没有直接参与技术支持寻求解决方案 - 我只是多年前写的应用程序)

我建议你唯一的出路就是使用特殊的低内存PC运行应用程序。