无法从Access 2007 accdb使Access 2010 accde

时间:2014-09-19 02:32:35

标签: ms-access-2010

我有一些问题,可以真正使用一些帮助。我的组织最近从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;一切都无济于事。我没有任何网页内容或特定的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"相反,只是在主要部分。(我猜这些是用于表单吗?)无论如何,是否有更好的方法来格式化文件名(如果必须要做什么)将这些文件删除到我的原始查询名称并正确导入?如果这没有意义,请告诉我。谢谢你的时间。

1 个答案:

答案 0 :(得分: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

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