【问题标题】:Cannot make Access 2010 accde from Access 2007 accdb无法从 Access 2007 accdb 制作 Access 2010 accde
【发布时间】: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


    【解决方案1】:

    可以将 Access 数据库导出到文本文件,请参见此处:http://www.access-programmers.co.uk/forums/showthread.php?t=99179

    Option Compare Database
    Option Explicit
    
    Public Sub ExportDatabaseObjects()
    On Error GoTo Err_ExportDatabaseObjects
    
        Dim db As Database
        'Dim db As DAO.Database
        Dim td As TableDef
        Dim d As Document
        Dim c As Container
        Dim i As Integer
        Dim sExportLocation As String
    
        Set db = CurrentDb()
    
        sExportLocation = "C:\Temp\" 'Do not forget the closing back slash! ie: C:\Temp\
    
        For Each td In db.TableDefs 'Tables
            If Left(td.Name, 4) <> "MSys" Then
                DoCmd.TransferText acExportDelim, , td.Name, sExportLocation & "Table_" & td.Name & ".txt", True
            End If
        Next td
    
        Set c = db.Containers("Forms")
        For Each d In c.Documents
            Application.SaveAsText acForm, d.Name, sExportLocation & "Form_" & d.Name & ".txt"
        Next d
    
        Set c = db.Containers("Reports")
        For Each d In c.Documents
            Application.SaveAsText acReport, d.Name, sExportLocation & "Report_" & d.Name & ".txt"
        Next d
    
        Set c = db.Containers("Scripts")
        For Each d In c.Documents
            Application.SaveAsText acMacro, d.Name, sExportLocation & "Macro_" & d.Name & ".txt"
        Next d
    
        Set c = db.Containers("Modules")
        For Each d In c.Documents
            Application.SaveAsText acModule, d.Name, sExportLocation & "Module_" & d.Name & ".txt"
        Next d
    
        For i = 0 To db.QueryDefs.Count - 1
            Application.SaveAsText acQuery, db.QueryDefs(i).Name, sExportLocation & "Query_" & db.QueryDefs(i).Name & ".txt"
        Next i
    
        Set db = Nothing
        Set c = Nothing
    
        MsgBox "All database objects have been exported as a text file to " & sExportLocation, vbInformation
    
    Exit_ExportDatabaseObjects:
        Exit Sub
    
    Err_ExportDatabaseObjects:
        MsgBox Err.Number & " - " & Err.Description
        Resume Exit_ExportDatabaseObjects
    
    End Sub
    

    如果原则仍然成立,您应该能够将生成的对象导入新的数据库。如果权限有任何问题,这应该在文本文件中变得明显,但通常这会剥夺所有权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      • 2011-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-15
      相关资源
      最近更新 更多