【发布时间】:2014-11-13 13:13:32
【问题描述】:
我有一点问题,真的需要一些帮助。我的组织最近从 Office 2007 迁移到 Office 2010。我有一个使用 Access 2007 开发的数据库(使用 .accdb 数据库文件类型)。在整个迁移过程中,我仍在更新我的数据库。所有更新都是通过 Office 2007 机器进行的,并且一切都在我将其部署到的 2010 系统以及 2007 机器上运行。现在的问题是,由于所有计算机都正式在 2010 上,我似乎无法从 Access 2010 创建 Accde 文件。我收到的错误是:“命令或操作 'MakeMDEFile' 现在不可用。” * 您可能在只读数据库或未转换的早期版本数据库中...”代码编译没有错误,我的参考很好。
我尝试重新编译代码,重命名“C:\Program Files\Microsoft Office\Office14\ACCWIZ”文件夹中的向导并让它们重新安装,并将我的所有对象导入一个新的基于本文的数据库:http://msdn.microsoft.com/library/office/dn602608%28v=office.14%29.aspx;一切都无济于事。我没有任何 Web 内容或任何特定于 Access 2010 的内容,因为我只对我在 2007 年创建的内容进行了调整。我确实读过 Access 必须在创建它的相同版本上编译,但是我认为既然 2007 和 2010 都使用 .accdb 文件格式,它会兼容吗?对此有何建议?谢谢。
感谢您的快速回答!那效果很好。我能够使用代码成功导出我的数据库,并且我还导入了除查询之外的所有对象。 (我能够创建 accde。)因为我有很多对象,所以我使用脚本来导入所有内容。我现在遇到的问题是我的 SQL 查询。导出脚本为 SQL 查询命名的文本文件略有不同,我不知道如何处理它们。以下是适用于其余对象的代码:
Public Sub batchImport_queries()
On Error GoTo batchImport_Err
Dim objFS As Object, objFolder As Object
Dim objFiles As Object, objF1 As Object
Dim strFolderPath As String
strFolderPath = "C:\Users\Me\Desktop\dbexport\queries\"
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFS.GetFolder(strFolderPath)
Set objFiles = objFolder.files
For Each objF1 In objFiles
objF1.Name = Right(objF1.Name, Len(objF1.Name) - 6)'strips "Query_"
objF1.Name = Left(objF1.Name, Len(objF1.Name) - 3) 'strips ".txt"
Application.Application.LoadFromText acQuery, objF1.Name, strFolderPath & objF1.Name
Next
Set objF1 = Nothing
Set objFiles = Nothing
Set objFolder = Nothing
Set objFS = Nothing
batchImport_Exit:
Exit Sub
batchImport_Err:
MsgBox Err.Number & " " & Err.Description
Resume batchImport_Exit
End Sub
这适用于如下查询:“Query_qryAvailable.txt”,但 SQL 看起来像这样:“Query_~sq_cCIPSSubform~sq_RosterSubform.txt”。它似乎在查询名称的第一部分封装了“~sq_c”,然后在文件名的最后部分封装了与之关联的表单/子表单/或控件......或者我可能完全关闭。我无法弄清楚模式。他们中的一些人有“〜sq_f”,只是在前导部分。(我猜那些是为了表格?)无论如何,有没有更好的方法来格式化文件名(如果这是必须做的)删除那些到我的原始查询名称并正确导入?如果这没有意义,请告诉我。感谢您的宝贵时间。
【问题讨论】:
标签: ms-access-2010