3

作为我们构建过程的一部分,我们必须创建一个 Access ACCDB (2007) 数据库。数据库构成了我们应用程序的当前前端,并且必须(出于其他原因)在构建过程的初始阶段构建。

目前,这是一个我希望自动化的手动过程。我们的数据库由许多表、公式、查询等组成。我相信我们实际上已接近 Access 实际能够处理的极限,因此我们尽量不向其中添加任何内容。

我看过这个项目: http ://buildmsaccessdb.codeplex.com/

它似乎工作得很好。但是,在我们的项目中,我们还有一个 ACD 文件,它是一个二进制文件,其中包含许多与系统相关的表。在 Access 开发方面,我绝不是一个向导。我刚刚接手了处理构建过程的任务。

每当我使用上述项目包含 ACD 文件时,我都会遇到 COM 互操作异常。我现在没有错误消息,但如果它进一步导致了原因,我可以发布它。

我们使用 StarTeam 作为我们的源代码控制,目前在尝试从源代码控制系统创建我们的数据库时遇到了重大问题。我有时会花费数小时重新尝试从源代码管理中创建数据库,因为每次 Access 尝试导入 ACD 文件时都会出现未知故障。

我们已尝试停用 Access 中的任何宏以及在从数据库创建阶段可能已自动激活的 ACD 文件。我们怀疑这可能会中断数据库创建过程,但问题仍然存在:经过多次尝试和部分运气,我们只能从源代码控制创建访问数据库!我想通过自动化整个事情来补救。

你们中的一些人可能会指出,最好的起点是找到从 Starteam 提取 ACD(和其他)源文件的问题。我(最初)对此的看法是,如果无论如何都归结为纯粹的运气,我宁愿让它自动化,然后让计算机浪费时间尝试构建 Access 数据库,然后让我监控这个过程。

任何有关如何解决自动构建源控制系统(即持续集成)中获取 Access 数据库的问题的帮助或提示都非常受欢迎。

当然,我还想就如何解决在没有一定运气的情况下无法从源代码控制创建数据库的问题提出建议。

4

1 回答 1

0

我们最终设法解决了问题:

如果我们使用二进制 ACD 文件作为创建数据库的起点,则在导入数据库后,它的内容也将可用。以它为起点,我的意思是

  1. 将 ACD 文件复制到适当的目标
  2. 将 acd 文件重命名为 MyCompanyName.accdb
  3. 提供 MyCompanyName.accdb 作为 MS Access 数据库,以将文件导入到 MSBuildAccess 项目中

因此 ACD 文件不应与其他文件一起导入,而应以它为起点。通过查看 codeplex 项目中的实际 msbuild 任务,这一点变得显而易见。

除了上述步骤之外,我们在 Ms Access 中还遇到了与 UIRibbon 类相关的构建错误。通过创建 MSBuildAccess 项目文档中提到的参考文件解决了这个问题(请参阅http://buildmsaccessdb.codeplex.com/documentation)。

现在,我们只需要在编译我们的 access 数据库时解决内存不足的问题。随着我们减小 Access 项目的大小,这很可能会消失。根据我们的“经验”,我们的 Access 解决方案在模块、报告、表单等方面的处理能力处于 Access 的极限。有关该问题的更多信息,请参阅这些参考资料:

  • http://help.lockergnome.com/office2/Create-accde-file-error--ftopict802934.html
  • http://stackoverflow.com/questions/1300632/compiling-an-access-2007-accdb-into-accde
  • http://bytes.com/topic/access/answers/518438-cant-create-mde
于 2012-02-06T08:23:27.803 回答