An Open Letter to MS Access Users

Dear MS Access Power Users,
MS Access is the most popular Personal Database in the World thanks to its Rapid Prototyping Philosophy accessible even to the average Users. Unfortunately this also means that the full power of MS Access is often completely hidden to these same people.
Nonetheless, many MS Access Users, since they are non-IT Professionals use only 1/10th of MS Access Power, even if they go beyond Macros and use VBA modules, they may not ever wander into MS Access VBA Class Modules. So this blog will aim not only at providing vba recipes but also at teaching the practice of Object Oriented Programming with MS Access VBA.
Why would you use OOP with MS Access VBA ? Many times I have seen in Corporate World a User develop a little Utility in MS Access which slowly but surely along months or years turns into a full-blown Business Application and the IT people will get crazy at it when one day that User or Manager of that User is asking for help to maintain the Application because the creator has just gone or the needs of the application is becoming too complex for the User to cope with. That’s why MS Access has a pitiful reputation to be unprofessional whereas it is rather that their users are Professional of their own Field but mostly not expert in IT Field.
The problem is that this reputation leads many IT Professionals not to even bother looking at MS Access since it is a “User” platform. So it’s time to change things a little bit :). I’m gonna show you how to create a maintainable MS Access Application or how to refactor your application to be Object Oriented.
Firstable a little warning. Most people shunt VBA as not “truly” Object. I remind that there is no true Object Programming Language but only “Oriented”. And VBA is as Oriented as any others even if it lacks traditional Inheritance … since it can do Inheritance through Class Interfaces and as you may or may not know traditional Inheritance is now considered Evil - see this Javaworld’s article where Jame’s Gosling (Java’s Father) is quoted to have said when someone asked him: “If you could do Java over again, what would you change?” “I’d leave out classes,” he replied. He explained that the real problem wasn’t classes per se, but rather implementation inheritance (the extends relationship). Interface inheritance (the implements relationship) is preferable.
Sincerely yours,
P.S.: Start with the first lesson on MS Access VBA OOP.