65.9K
CodeProject 正在变化。 阅读更多。
Home

自动部署 MS Access 应用程序

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.20/5 (2投票s)

2016 年 7 月 1 日

CPOL

3分钟阅读

viewsIcon

15230

downloadIcon

4

使用 .Net 应用程序自动执行 MS-Access 应用程序

引言

MS-Access 是开发小型用户应用程序最喜欢的工具之一,因为一个数据库文件可以包含任何应用程序所需的所有内容(数据表、窗体、查询、报表等...),维护成本也很低。

与其他应用程序一样,MS-Access 应用程序也需要进行更改。在通常情况下,为了使更改在生产环境中可用,我们必须将所有修改过的对象(窗体、查询、报表等)从开发副本复制到生产环境。这个过程可能很费力、容易出错,甚至很耗时。本文介绍如何自动执行部署过程,从而使生活更轻松,部署更快。

使用代码

我使用了 2 个 MS Access 数据库文件作为我的应用程序。 Database2.accdb 是生产副本,Database1.accdb 文件是包含所需修改组件的开发副本。 我正在使用 .Net 应用程序来自动化传输过程。
 
用于复制对象的主要方法是
DoCmd.TransferDatabase(TransferType, DatabaseType, DatabaseName, ObjectType, Source, Destination, StructureOnly, StoreLogin)
帮助链接 https://msdn.microsoft.com/en-us/library/office/ff196455.aspx
 
现在,让我们进入细节。我们需要做的第一件事是在 Visual Studio 中创建一个项目。 我使用 VS2015 社区版创建了一个控制台项目。 要使用 MS-Access 对象,我们需要首先在我们的项目中添加 Access COM 对象的引用。 这可以通过右键单击解决方案资源管理器中的引用,然后单击添加引用来完成,这将弹出引用管理器对话框。 单击 COM,它应该位于对话框的左侧。 搜索 Microsoft Access 14.0 对象库(请注意,我使用的是 14.0,但此版本号可能会有所不同)。 下面的屏幕截图显示了引用管理器的外观。

 
添加引用后,我们可以执行下一步,即打开源文件,即.. 应用程序中的 Database1.accdb 文件。 以下两行显示了它是如何完成的。
 
    Application app = new Microsoft.Office.Interop.Access.Application();
    app.OpenCurrentDatabase(@"C:\TransferDemo\Database1.accdb", false);

就这样! 我们完成了。 一旦打开源数据库,我们只需要使用 DoCmd.TransferDatabase() 方法来传输所需的对象。 在本文中,我仅使用了一个名为“frm_Registration”的窗体。

app.DoCmd.TransferDatabase(AcDataTransferType.acExport, "Microsoft Access", @"C:\TransferDemo\Database2.accdb", AcObjectType.acForm, "frm_Registration", "frm_Registration");
 
上面的链接详细解释了 TransferDatabase 方法,但我将快速解释上面使用的参数。
 
第一个参数是指定我们是否希望导出、导入或只是将所需对象链接到目标数据库。

其次,指定目标应用程序是什么。 在这种情况下,它是 MS Access,因此提到了这一点。

第三个参数是我们的目标 MS Access DB 的路径。

第四个参数指定正在传输到目标的对象的类型,在我们的例子中,因为我们只复制窗体,所以提到了这一点。 Access 允许我们复制其他对象,例如查询、报表、表等...

接下来的两个参数是我们想要复制的对象的名称以及我们希望它在目标文件中的名称。 本文中未使用最后两个参数。

传输完成后,作为一种好的做法,必须关闭打开的数据库文件。 以下代码行执行此操作。

 app.CloseCurrentDatabase();

就这样! 我们有一个代码可以将所需的对象从一个 .accdb 文件复制到另一个。 这里的优点是,即使要复制的对象已经存在于目标数据库中,我们也不必担心,TransferDatabase 方法会将它覆盖在目标数据库上。

结论

作为此应用程序的输入,所有需要的是要传输的对象及其类型的列表。 有多种方法可以实现这一点,创建文本文件、excel 表格,甚至创建一个 UI,该 UI 将列出源 DB 文件中的所有对象,然后提供一个功能来选择需要传输的对象。

© . All rights reserved.