Ms access 如何以编程方式修复(而不仅仅是压缩)Access.mdb文件?

Ms access 如何以编程方式修复(而不仅仅是压缩)Access.mdb文件?,ms-access,Ms Access,我有一个损坏的数据库。如果我在MS-Access中打开它,MS-Access会提供修复服务,并且它会成功 我怎样才能用代码做到这一点?在未安装MS Access的计算机上 通过尝试,我知道JRO.JetEngine.CompactDatabase不起作用 换句话说,我想做Access或JETCOMP.exe正在做的事情,而不是JRO.JetEngine.CompactDatabase正在做的事情。我不是MS Access专家,但它似乎包含压缩和修复损坏数据库文件所需的DLL。打开.mdb文件的命

我有一个损坏的数据库。如果我在MS-Access中打开它,MS-Access会提供修复服务,并且它会成功

我怎样才能用代码做到这一点?在未安装MS Access的计算机上

通过尝试,我知道JRO.JetEngine.CompactDatabase不起作用


换句话说,我想做Access或JETCOMP.exe正在做的事情,而不是JRO.JetEngine.CompactDatabase正在做的事情。

我不是MS Access专家,但它似乎包含压缩和修复损坏数据库文件所需的DLL。

打开.mdb文件的命令行开关:

/compact
它修复并压缩数据库文件


如果在/compact开关后省略了目标文件名,则该文件将压缩为原始名称和文件夹。若要压缩为其他名称,请指定目标文件。

是否尝试过DBEngine.RepairDatabase[my.mdb]?(即使在引用早期版本时,这似乎也不再有效)

然而,如果这种情况经常发生,您需要编写代码,那么您可能有一个更大的问题需要首先解决

如果您愿意使用单独的实用程序,那么Jetcomp.exe实用程序()如何。它应该“能够恢复Microsoft Access compact实用程序和CompactDatabase方法无法恢复的某些数据库”。在这种情况下,您只需执行外部应用程序即可

e、 g

Call Shell("Jetcomp.exe <arguments>")
调用Shell(“Jetcomp.exe”)
您需要转到并搜索JetComp.exe实用程序,该实用程序将尝试在不打开文件的情况下修复和压缩MDB。上述建议都不起作用的原因是,他们必须打开MDB才能完成工作,而JetComp不打开文件,而是在结构上对其进行操作


如果它无法恢复您的文件(确实发生了这种情况),那么您必须转到数据恢复服务。我推荐PKSolutions.com的Peter Miller。

对不起,我澄清了我的问题,以表明在未安装MS Access的计算机上。但是请参阅::PRB:RepairDatabase方法在DAO 3.6中不再可用,但您尝试过JetComp吗?这与那篇文章中的问题无关,因为它是一个独立的可执行文件。顺便说一句,使用Access97 SR2从Access中删除了作为单独操作的修复,因为人们正在修复未损坏的MDB,这会损坏它们。从那时起,每次紧凑型操作都首先检查MDB是否需要维修,如果需要,则进行维修。因此,要修复,可以执行compact.JetComp,但我不想发布JetComp。我想将其功能构建到我的应用程序中。这就是我所说的“以编程方式”的意思。那么我认为这是行不通的。而且这可能不值得你努力去寻找一种方法——事实上,这应该是一个罕见的事件。添加有关如何修复损坏数据库的常见问题解答。或者更好的办法是从源头上解决问题。切换到更可靠的免费数据库(MySQL、运行时MS SQL等)我查看了源代码,它正在做我正在做的事情,调用JRO.CompactDatabase.Er,你试过JetComp吗?如果它不起作用,则无法使用任何Microsoft提供的工具修复数据库,您需要与恢复损坏的Jet MDB的人员联系。我推荐Peter Miller。不是答案,因为我想“以编程方式”完成。那么,恐怕你运气不好。顺便说一句,你的应用程序架构有什么问题,你知道你的用户将需要非凡的工具来修复损坏的MDB吗?没有理由认为MDB会损坏(这是一个架构良好的应用程序中的例外,而不是规则)。也许你不应该用Jet,