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

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.
Complete VMware vSphere® ESX(i) & Hyper-V Backup

Capture your entire system, including the host, with patented disk imaging integrated with VMware VADP / Microsoft VSS and RCT. RTOs is as low as 15 seconds with Acronis Active Restore™. You can enjoy unlimited P2V/V2V migrations from any source (even from a different hypervisor)


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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

The first two articles in this short series — Using a Criteria Form to Filter Records ( and Building a Custom Filter ( — discuss in some detail how a form can be…
Today's users almost expect this to happen in all search boxes. After all, if their favourite search engine juggles with tens of thousand keywords while they type, and suggests matching phrases on the fly, why shouldn't they expect the same from you…
What’s inside an Access Desktop Database. Will look at the basic interface, Navigation Pane (Database Container), Tables, Queries, Forms, Report, Macro’s, and VBA code.
In Microsoft Access, when working with VBA, learn some techniques for writing readable and easily maintained code.

911 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

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now