Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MS Access VBA:如何捕获由于内存或磁盘空间不足而导致删除挂起的情况?_Vba_Ms Access_Error Handling_Low Memory - Fatal编程技术网

MS Access VBA:如何捕获由于内存或磁盘空间不足而导致删除挂起的情况?

MS Access VBA:如何捕获由于内存或磁盘空间不足而导致删除挂起的情况?,vba,ms-access,error-handling,low-memory,Vba,Ms Access,Error Handling,Low Memory,我在MS Access 2007中有一个偶发错误,无法可靠地重现。情况如下: 将500K+行文本数据从文件加载到表中 [使用加载的数据进行填充] 尝试使用从vba中删除表的内容 CurrentDB()。执行“从RawImport删除*”,其中RawImport是表名 在步骤3,代码有时会挂起,直到我按ctrl键中断为止。发生这种情况时,如果Ctrl-F11返回到数据库视图并尝试删除表的内容,它将始终给我一个错误“没有足够的内存或磁盘空间来使用撤消完成此操作,是否要继续”(意译,我无法捕获错误)

我在MS Access 2007中有一个偶发错误,无法可靠地重现。情况如下:

  • 将500K+行文本数据从文件加载到表中
  • [使用加载的数据进行填充]
  • 尝试使用从vba中删除表的内容 CurrentDB()。执行“从RawImport删除*”,其中RawImport是表名

  • 在步骤3,代码有时会挂起,直到我按ctrl键中断为止。发生这种情况时,如果Ctrl-F11返回到数据库视图并尝试删除表的内容,它将始终给我一个错误“没有足够的内存或磁盘空间来使用撤消完成此操作,是否要继续”(意译,我无法捕获错误)


    退出访问和重新加载通常会清除这些,这样VBA代码就可以运行了,这一切都很好,很可爱,但是我如何才能捕捉到这些呢?在删除时它不会在vba中生成错误,它只是在我手动中断之前一直在那里。

    最后,我确实遵循了创建临时数据库的方法,在该数据库中动态创建表,将其与主数据库链接,然后在每个加载/处理周期结束时删除临时数据库。它可以正常工作,但对于一个非常简单的数据库用例来说,它有点过于复杂-不难理解为什么人们会如此轻易地超过访问权限。

    我认为这对于msAccess来说数据太多了,您有损坏数据库的风险。如果可能的话,您应该改用MSSQL。我也期待着有人的回答在处理过程中观察Access DB的大小,看看文件在处理过程中会增长多大。我猜您正在运行2GB大小限制“使用撤消完成此操作”-因此您确实希望继续,但没有为此提供任何输入。尝试查看是否有其他方法删除输入为“ignore undo”的表,或者是否有其他方法(如runsqlit)删除表并重建为空?Hynek不正确。500k行对于访问来说并不太多。根据建议,检查文件大小。你能发布相关代码吗?如果您声明一个数据库变量,而不是使用CurrentDb(),则问题可能会少一些。Dim dbS作为dao.Database Set dbS=CurrentDb()sbS.Execute,dbFailOnError。UI警告只与UI有关。它只是告诉你一旦你删除了这些记录,你就无法撤销它。