是否可以使用脚本升级旧的MS Access数据库?

时间:2009-09-29 08:59:14

标签: database ms-access

我有这个旧的MS Acceess数据库充满了有用的数据,但是较新版本的软件需要较新版本的db(较新版本的db设计和一些修复程序的差异)。 使用Sql Server或者没有任何问题,我会写一个脚本,我会有一个升级的数据库。 使用Access时,当我尝试自己编写脚本以及使用工具生成脚本时,我会遇到麻烦。

请帮忙。

2 个答案:

答案 0 :(得分:1)

Compare'Em此实用程序将创建必要的VBA(如果您向他支付10美元,则创建DDL)以生成两个后端MDB之间的差异。虽然它有它的怪癖但它做得相当不错。我一直用它来做我自己的“收缩包装”应用程序。

我在表中的特定字段中保留版本号,并在它们首次链接到BE MDB时执行相应的代码,以将BE MDB更新为新的文件结构。每个版本更新都在它自己的子程序中。我使用以下内容将版本号更新为下一个版本号。

' Update VersionNumberData on table
strSQL = "UPDATE zDataVersionNumberApp IN '" & strDatabasePathandName & "' SET zDataVersionNumber  = " & _
    CurrentVersionNumber
CurrentDb.Execute strSQL, dbFailOnError

当然,在运行代码部分创建新表,字段,索引和关系之后,我会运行各种更新/插入查询来清理数据。然后继续运行生成的代码以删除旧字段/表。使用IN子句进行更新/插入查询的语法有点复杂,所以我要包含一个示例。此示例涉及将键入的服务技术名称移动到另一个表,以便系统可以使用组合框来实现服务技术,分配技术小时费率等等。

' Append records to ServiceRecords table
strSQL = "INSERT INTO ServiceTech ( stServiceTech ) " & _
    " IN '" & strDatabasePathandName & "' " & _
    "SELECT srServicePerson FROM ServiceRecords " & _
    " IN '" & strDatabasePathandName & "' " & _
    "GROUP BY srServicePerson " & _
    "HAVING (srServicePerson Is Not Null);"
CurrentDb.Execute strSQL, dbFailOnError

答案 1 :(得分:0)

为什么不使用其他工具连接到您的ole访问数据库来提取数据? Excel可以完成这项工作,我猜许多其他(或多或少)免费工具可以将所有这些数据传输到您最喜欢的服务器。