none
"Cannot open a database created with a previous version..." /// Application.CompactRepair /// Extract data from an old .mdb RRS feed

  • Question

  • Trying to open .mdb files created by 15+ year old software and Access is, unsurprisingly, protesting:

    "Cannot open a database created with a previous version of your application." // OK // Help //

    Files still function in originating x86 software, and have been opened by older versions of Access in the past.   
    Running Win10 Pro (10.0.15063) x64 and Access 2013 (15.0.4963.1000) x64 via Office 365 ProPlus, all updates applied.

    Since I can't open the file, I'm unable to convert it by re-saving it, and can't perform any VBA tricks, such as identify what version of Access the file originated from - so I can't rule out it being an .mdb of the Access 97 persuasion.

    Hoping for a solution that doesn't require me building a VM just to keep an install of Access 2010 around for a DB that's simple enough to be a .csv

    What I've tried:

    Clicking 'Help' on the popup error opens this lovely error 3041 help page which suggests I "compact the database", and provides two links (below) to entries in the Office VBA Reference on how to do so.  Neither page has any content.  (Even if these did contain the promised info, how could VBA help if the file wont open?) 

    TechNet Library entry on the error proved just as (un)helpful.

    Using Excel and importing data "From Access" hasn't worked, both MS Office 12 and 15 DB OLE Providers throw the same error as Access did.  No option for the older Jet x32 driver, probably because it's an x64 install of Office.

    Any other ideas?

    EDIT: Apparently my five-year-old account isn't verified properly (??) and links were removed...

    https://support.office.com/en-us/article/Convert-a-database-to-the-accdb-file-format-098ddd31-5f84-4e89-8f44-db0cf7c11acd

    https://blogs.technet.microsoft.com/heyscriptingguy/2005/10/07/how-can-i-determine-which-version-of-access-was-used-to-create-a-database/

    https://msdn.microsoft.com/en-us/VBA/access-vba/articles/cannot-open-a-database-created-with-a-previous-version-of-your-applicationerror

    https://msdn.microsoft.com/library/4820fd79-d907-21bc-0ad5-5fc096c1ef3b%28office.15%29.aspx

    https://technet.microsoft.com/en-us/library/bb221761(v=office.12).aspx

    EDIT 2: Found a MS Support Help page on the error, seems to imply that Access97 files are the ONLY ones that will throw this particular error:   

    https://support.microsoft.com/en-us/help/2755119/-cannot-open-a-database-created-with-a-previous-version-of-your-applic

    • Edited by Kamereone Wednesday, October 18, 2017 9:34 PM update
    Wednesday, October 18, 2017 9:23 PM

All replies

  • Hi,

    Just a shot in the dark because you probably tried it already, but take a look at this article.

    Hope it helps...

    Wednesday, October 18, 2017 9:31 PM
  • You will have to find a computer with Access 2000, 2002, 2003, 2007 or 2010, or create a VM with one of these versions.

    Open the .mdb database on that computer, and save it as an Access 2000 database (also .mdb). You can then transfer it to the computer with Access 2013 or Access 2016, and open/edit it there.


    Regards, Hans Vogelaar (http://www.eileenslounge.com)

    Wednesday, October 18, 2017 9:35 PM
  • Thanks, but I did try this method to no avail - the suggested "Microsoft Jet 4.0 OLE db provider" is not an available option. I believe that it's because my install of Office is 64-bit, and thus the archaic driver was dropped from the list.

    BUT that does present an angle of attack I overlooked - hunting down a machine with a 32-bit version of Office should be much easier than finding a functioning installation of Access 2010!

    Wednesday, October 18, 2017 9:40 PM
  • Okay. Good luck with the hunt. Cheers!
    Wednesday, October 18, 2017 9:43 PM
  • Hi Kamereone,

    you had mentioned that the database was created by 15 year old software and now you want to open it in Access 2013.

    I suggest you to find the recent version of Access that can open your database like Access 2003 or Access 2007.

    try to check other versions too.

    then try to save as your database in newer version that is supported by Access 2013.

    or you can try to open the old database and try to export all table, data, code objects to newer version of database may help you.

    you need to timely upgrade the database software so that you can have a data in compatible version of Access 2013.

    try and let us know about your testing result.

    we will try to provide further suggestions if needed.

    Regards

    Deepak


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    Thursday, October 19, 2017 2:44 AM
    Moderator
  • If you just need the data you can also use ADO and run a .vbs script file using the 32-bit VBScript engine. Code below is in VBA but can be easily modified for VBScript:

    Dim cnn As New ADODB.Connection
    Dim strSQL As String
    Dim strTableName As String
    
                         
    cnn.Open _
       "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                         "Data Source=C:\Install\Access97.MDB;" & _
                         "Jet OLEDB:Engine Type=4;"
                                              
    Set rsSchema = cnn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, Empty))
    
    While Not rsSchema.EOF
        If rsSchema.Fields("TABLE_TYPE").Value = "TABLE" Then
            strTableName = "[" & rsSchema.Fields("TABLE_NAME").Value & "]"
            strSQL = "SELECT * INTO [MS Access;DATABASE=C:\Users\username\Documents\My Database\Access\Access2003.mdb;]." & strTableName & " FROM " & strTableName
            cnn.Execute strSQL
        End If
        rsSchema.MoveNext
    Wend
      
    rsSchema.Close
    
    cnn.Close
    Set cnn = Nothing

    If you want to add primary keys and indexes, etc. you would need to use ADOX as well.


    Paul ~~~~ Microsoft MVP (Visual Basic)

    Thursday, October 19, 2017 2:44 PM