以编程方式检查Access数据库损坏?

时间:2009-11-25 22:16:22

标签: sql-server ms-access access-vba ms-access-2003

有没有办法以编程方式检查Access 2003中的数据库对象损坏?

我的开发项目变得非常复杂,在编程一天之后很难手动检查所有对象,看看是否有某些小的控件,表单,报表,查询或代码对象以某种方式被破坏。我已经将数据分成存储在另一台机器上的单独的SQL数据库,而这个项目只是一个处理数据的前端应用程序。

主要是一个学术上的沉思,因为我只是不想到目前为止 - 然后腐败让我回到几个星期,因为一些很少使用的对象在以后被破坏了。

有什么想法吗?提前感谢任何指针!

EDITED 12/03/2009 @ 11:51

可悲的是,我只能接受一个答案 - 虽然我有一些非常好的答案,谢谢你的所有指示!

3 个答案:

答案 0 :(得分:2)

您可能希望看一下:Is it possible to programmatically detect corrupt Access 2007 database tables?

我倾向于在每个紧凑型和附件中保留一份重要的数据库。修复并将新数据库与前一个数据库进行比较。您还可以检查非标准字符。

答案 1 :(得分:1)

正确的编译实践可以防止VBA项目的破坏(这就是你在这里谈论的)。

这需要:

  1. 在所有模块中使用OPTION EXPLICIT。

  2. 在VBE选项中关闭COMPILE ON DEMAND。

  3. 在工作时定期编译代码。

  4. 定期(例如,编码一整天后每天一次)反编译并重新编译代码。

  5. 如果你这样做,你将永远不会遇到腐败,所以你不需要为它进行测试(这首先是不可能的)。

答案 2 :(得分:1)

Compact / Repair和Decompile / Recompile都没有捕获所有的损坏问题,尽管你应该这样做。

我使用函数将所有Container Docs(和QueryDefs)使用SaveAsText导出到日期/时间戳记文件夹中,并在一天中定期使用它。如果我怀疑有任何损坏,我会创建一个新的mdb,并使用LoadFromText重新创建对象。