【问题标题】:Open MS Access database that is over 2GB打开超过 2GB 的 MS Access 数据库
【发布时间】:2019-02-09 17:21:32
【问题描述】:

您好,希望可以解决此问题,但我的 ms 访问程序在完成数据清理之前就崩溃了。它现在达到最大 2GB 并且不会打开任何人知道在这里做什么?我只需要它来删除列中的所有数据,有价值的是查询以及它们的顺序。

只是得到错误无法打开数据库''。它可能不是您的应用程序识别的数据库,或者文件可能已损坏。它给了我两次。

它是 .accdb 格式,所以不应该是阅读问题

干杯。

【问题讨论】:

  • 您是否尝试过反编译数据库。使用C:\Program Files (x86)\Microsoft Office\Office14\MSACCESS.EXE /decompile 打开 Access,然后使用您的数据库。 它可能会起作用。您可能需要将路径更新为Access.Exe。
  • 我在那个文件夹中只有 STSLIST.DLL。可悲的是 1033 有 STSLIST.CHM 和 STSLISTI.DLL
  • 您的意思是在注册表编辑器中吗?
  • 否,请在您的(我猜想)C 驱动器上找到 Access 的安装位置。看看 Erik von Asmuth 在这里给出的答案:How does one decompile and recompile a database application?
  • 遗憾的是它没有工作它不会让我打开它仍然相同的错误消息

标签: ms-access


【解决方案1】:

尝试直接从 DAO 数据库引擎运行压缩和修复,而无需在 Access 中打开文件

您可以从任何支持 VBA 的应用程序或 VBScript 文件中使用以下代码(它是为 VBScript 文件设计的,但您必须将位数与您的 Access 应用程序相匹配,请参阅this post,但在 Excel 中也应该可以正常运行)

Dim wShell, oExec, sFileSelected
Set wShell=CreateObject("WScript.Shell")
Set oExec=wShell.Exec("mshta.exe ""about:<input type=file id=FILE><script>FILE.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>""")
sFileSelected = oExec.StdOut.ReadLine
CreateObject("DAO.DBEngine.120").CompactDatabase sFileSelected, Left(sFileSelected, Len(sFileSelected) - 6) & "Compacted.accdb"

这应该在压缩时复制损坏数据库中的所有内容。它会创建一个新文件,并附加您当前的文件名和 Compacted。

【讨论】:

  • 您的意思是在 excel 中创建一个按钮,将代码放在其中,然后将 FILE 替换为数据库的位置:C:\Users\User1\Desktop\AutomaticImport.accdb。然后所有的小案例文件 = accdb
  • 我问是因为我看不到程序如何知道它在寻找什么
  • 它提示输入文件位置。将其放在 Excel 按钮、不同的 Access 数据库或 VBScript 文件后面。
  • 谢谢你的魅力。本周你帮助了 Erik 保重两次
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-18
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多