Oh, god, where to begin... so many weird/bad choices to talk about...
The biggest change is the Ribbon interface. I can see new users liking this, but it sucks hard for developers and power users used to a very customizable interface. It's only customizable through editing a complex XML document, and it's impossible to make it go away completely. Even if you go through the convoluted steps to force it to display the a pre-2007 toolbar, remnants of the Ribbon remain.
They only shipped a GUI ribbon editor (Ribbon Designer) with Excel, Outlook, Word and Powerpoint. This has "Access 2007 was rushed out the door" written all over it, as, if anything, Access needs it far more than the other products due to the market for sophisticated solutions written for that platform. This is really just another example of Microsoft's "Access? Never heard of it!" attitude. If they had their way, they'd almost certainly just abandon Access entirely in favor of pro-level products like SQL Server and Visual Studio.
The cleanest answer to people with heavily customized menus/toolbars is just to not move to the 2007 format. If you do 'upgrade', you'll have completely uneditable menus and toolbars unless you retain a previous version of Access. Encouraging people to NOT move their database to the current format is just bizarre. Oh, or you can buy a third-party component that hacks menus back into Access. Nice little kick in the teeth for developers after paying $100-200 just to get the latest version of Access.
Running both versions side-by-side appears to be problematic at best. I've repeatedly had Access 2007 semi-uninstall itself when I open Access 2000. Opening the shortcut for 2007 results in an "Installing..." message box, then bombs out with "Error #2711: AccessRTNonBootFiles". From there, I have to run the Microsoft Office Diagnostics tool. Once that fixes the problem with 2007, I have to manually re-enable the Microsoft Access Developer Extensions.
When that happens several times every day, taking 10 minutes or more to fix each time... Let's just say that Z has been a saint for putting up with my howls of rage for the past several weeks. Why Microsoft still insists on tying their frigging products into everything else in the system, octopus-like, causing compatibility problems all over the place, is a mystery. Stop it! Bad! No reason for this in 2008!
The last time that happened was even more delightful. For some reason, it completely borked my entire Office 2000 installation. Repair options did nothing to fix the problem. In the end, I had to completely uninstall Office 2000, then reinstall from CD. Fun!
After the frustration that I encountered trying to hack the Quick Access Toolbar into a more traditional menu, I decided to just put my frustrations aside, drink the MS Kool-aid, and convert my menu system into a custom Ribbon.
You'll have to add the Microsoft Office 12.0 Object Library to the references for your project in VB in order to avoid compile errors. This is because the code you call from the ribbon need to use the following format: Public Sub MySubNameHere(ctl As IRibbonControl). Note the 'ctl As IRibbonControl' parameter, as Access will give the following error when calling them without it: "Can't run the macro or callback ..." otherwise.
You'll call them from your ribbon XML as follows:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="true">
<tabs>
<tab id="tabMain" label="Home">
<group id="grpProjects" label="Projects">
<button id="cmdHome" label="Home" onAction="ShowMyAlert" size="large" imageMso="OpenStartPage" supertip="Test of calling VBA code.">
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Something subtle has changed with opening modal/maximized forms in between 2000 and 2007. I get all kinds of weird behavior now, from forms resizing themselves to smaller versions after a maximized form is closed, to forms going behind the Windows toolbar (making some controls inaccessible), to very strange behavior on report print previews (next/last page controls being semi-disabled, vanishing completely, etc.) The solution for the problems I've encountered is to set forms to open as non-modal from code, with the 'Pop Up' property set to 'No', the 'Modal' property set to 'Yes', and just have the calling form loop endlessly with a DoEvents until the called form doesn't exist any more. The called form needs to have DoCmd.Maximize in its Open event. After it closes, DoCmd.Maximize needs to be called from the original form in order to make sure it's restored to its previous position. Every other solution I've tried leads to some variety of the aforementioned weirdness occuring in one form or another.
In conclusion, Access 2007 sucks for the most part. I'm sorry I ever suggested it to my client, as it's now taken dozens upon dozens of hours of my personal time to fix the many problems it's caused. Avoid moving to the 2007 version if at all possible.
I get weird messages now, control backgrounds changing color...I don't know what they were thinking.
Posted by: Jim | November 23, 2009 at 09:59 AM