How do I downgrade my MS Access version?

Posted on 2009-05-19
Last Modified: 2012-05-07
I have an application that was developed using the version of MS Access on my machine (MS Access Version 12.0.6211.1000). Unfortunately it won't work properly on my user's version which appears to be older based on the version number (12.0.4518.1014). In have therefore created a virtual machine and loaded my original version of MS Access on it but it is still a different version to my users. My original version is Version 12.0.6304.5000 and my users have Version 12.0.4518.1014

Is there any way I can downgrade to their earlier version? I cannot realistically get my users to upgrade.
Question by:Rob4077
  • 4
  • 3
  • 3
LVL 84
ID: 24428019
Your version simply has SP1 installed; it's quite common to require endusers to have the most recent version of Access, including service packs and assuming they are running licensed copies of Access the upgrade is free.

The versions for msaccess.exe for 2007 are:

Original Version:      12.0.4518.1014
Service Pack 1:      12.0.6211.1000

I'm not sure where you're getting the 6304.5000 from unless you've installed some hotfixes.

That said: what exactly isn't "working properly" on the end user machine? Unless you're doing something that was fixed by the Service Pack, your database should run on 2007 or 2007 + SP1 ... and if your database REQUIRES SP1, then it requires it, and therefore your users will be required to upgrade.

LVL 84
ID: 24428022

Author Comment

ID: 24428203
Thanks for your comments.

I have been using the function at the end of this post to determine the version number being used.  When I use that function or the one on the link you provided I come up with 12.0.6211.1000 for my working machine. However if I run that function on the virtual machine I created with the version of Access 2007 installed from my original install discs (without applying any upgrades) I come up with 12.0.6304.5000. However if I check the virtual machine using the MS Method it shows 12.0.4518.1014.

<<what exactly isn't "working properly" on the end user machine?>> One of the forms isn't displaying a subform. I have no idea why so I was hoping to install their version of MS Access on my machine so I could try to figure out why it won't display. Based on what your link shows, my virtual machine doesn't have the service pack installed either, even though the build numbers are different, yet the subform displays on that version correctly. So could it be that I am using a feature that wasn't available in the earlier build or maybe I haven't included referenced to the right addin????? Any suggestions?

I would dearly love to require that they upgrade to the latest service pack but the IT department won't allow that so I need to get my application to work on the version they are using.

Function GetOSInformation() As String
' Culled from
Dim objWMIService As Object
Dim colItems As Object
Dim objItem As Object
'Dim sPath As String
Dim lStart As Long
Dim l As Long
Dim sDetails As String

    Set objWMIService = GetObject("winmgmts:\\" & "." & "\root\CIMV2")
    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", &H10 + &H20)

    For Each objItem In colItems
        sDetails = objItem.Caption & " " & objItem.CSDVersion & " " & objItem.Version & " " & objItem.BuildNumber
        lStart = 1
        For l = 1 To Len(Environ("Path"))
            If Mid(Environ("Path"), l, 1) = ";" Then
                'we have found the end of a path so test it
                If Dir(Mid(Environ("Path"), lStart, l - lStart) & "\MSAccess.exe") <> "" Then
                    sDetails = sDetails & " MS Access Version " & _
                      fGetProductVersion(Dir(Mid(Environ("Path"), lStart, l - lStart) & "\MSAccess.exe"))
                End If
                lStart = l + 1
            End If
        Next l

    GetOSInformation = sDetails
End Function
Comprehensive Backup Solutions for Microsoft

Acronis protects the complete Microsoft technology stack: Windows Server, Windows PC, laptop and Surface data; Microsoft business applications; Microsoft Hyper-V; Azure VMs; Microsoft Windows Server 2016; Microsoft Exchange 2016 and SQL Server 2016.


Expert Comment

ID: 24428229
The subform sounds like it could be a missing reference.  You should check tools > rerferences and see if anything is prefixed MISSING on the machie where the subform is missing.  

Decomplie has also helped me in these situations as well.

Start > Run

msaccess.exe /decompile "C:\path\db1.mdb"

Expert Comment

ID: 24428242
One last thought is that if the missing "subform" is actually a missing ActiveX control, the machine could be missing that control in the regisrty.  In this case you would have to copy the missing control to the machine and register it using Regsrv32.

I had this happen on Vista Machines that no longer has the Rich Text Box control installed.

Author Comment

ID: 24428677
Thanks for the suggestions. No missing references and a decompile was not needed. I found the problem was with the subform's recordsource.  The SQL statement I had used included a PARAMETER that the old version of MS Access was unhappy with. When I removed that PARAMETER all went well. Yet the subform worked fine on both builds of MS Access.
Therefore I go back to my original question and wonder if there is any way anyone knows of where I can get hold of a version of MS Access that is a build apparently older than the one that is on my install discs so I don't have to develop and test every modification on a machine at one of my users' sites?

Expert Comment

ID: 24428733
I would love to see a version specific parameter.  I have never heard of such. (just for my own selfish future reference of course)

Glad you found your problem!

Author Comment

ID: 24428759
Following is the SQL code I was using for the subform. On both the Version 12.0.6211.1000and Version 12.0.6304.5000 the code worked but on Version 12.0.4518.1014 the subform would not display until I removed the section of code from PARAMETERS to the semicolon (;) before SELECT. Why, I have no idea, but that was the only change I made and it worked.
PARAMETERS [Forms]![frmMainRosterPrep]![Roster Preparation Form].[Form]![LstWeeks] DateTime;
SELECT tblSubTimeEntries.*, tblDoing.MinDuration, tblDoing.BreaksNotRequired, tblTimeEntries.ClosedForEditing, tblTimeEntries.Notified
FROM tblTimeEntries RIGHT JOIN (tblSubTimeEntries LEFT JOIN tblDoing ON tblSubTimeEntries.DoingCode = tblDoing.DoingCode) ON (tblTimeEntries.ShiftNum = tblSubTimeEntries.ShiftNum) AND (tblTimeEntries.SAPNum = tblSubTimeEntries.SAPNum) AND (tblTimeEntries.Start = tblSubTimeEntries.Start)
WHERE (((tblTimeEntries.FortnightCommencing)=[Forms]![frmMainRosterPrep]![Roster Preparation Form].[Form]![LstWeeks]))
ORDER BY tblSubTimeEntries.StartDate;
LVL 84

Accepted Solution

Scott McDaniel (Microsoft Access MVP - EE MVE ) earned 500 total points
ID: 24430057
Is "DateTime" the name of your Parameter, or the name of a control on your form? Either way, try renaming it ...

I'm sure you could purchase an "original" copy of 2007 (i.e. pre-SP1), or you can purchase an MSDN subscription, which gives you access to every app/version of everything MS produces.

Author Comment

ID: 24432166
Thanks for the info on the subscription
When I created the parameter I used the Query editor and selected the Parameters button on the ribbon. I entered the name and the type was DateTime which it translated into the SQL of the query as above.

Featured Post

Ransomware-A Revenue Bonanza for Service Providers

Ransomware – malware that gets on your customers’ computers, encrypts their data, and extorts a hefty ransom for the decryption keys – is a surging new threat.  The purpose of this eBook is to educate the reader about ransomware attacks.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction When developing Access applications, often we need to know whether an object exists.  This article presents a quick and reliable routine to determine if an object exists without that object being opened. If you wanted to inspect/ite…
Describes a method of obtaining an object variable to an already running instance of Microsoft Access so that it can be controlled via automation.
In Microsoft Access, learn the trick to repeating sub-report headings at the top of each page. The problem with sub-reports and headings: Add a dummy group to the sub report using the expression =1: Set the “Repeat Section” property of the dummy…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

860 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question