Chicago Access Users Group (CAUG) talk - "Class Modules in Access"

January 22, 2009

Kevin Anderson, Anderson Information Technology, Inc.

 

Goal = improve software quality (McConnell 1993):

         Correctness

         Usability

         Efficiency

         Reliability

         Integrity

         Adaptability (extensibility)

         Accuracy

         Robustness

         Maintainability

         Flexibility

         Portability

         Reusability

         Readability (understandability)

         Testability

 

Advantages of using classes/objects:

         let's you create more complex objects than tables or queries provide alone

         using classes within classes let's you restrict function visibility

         class methods & attributes are more descriptive than module's function list alone

         let's you use Intellisense for more efficient coding

         no "ambiguous name" errors with multiple copies of the same class module

         can copy class modules without worry of creating ambiguous function names

         static variables are implicit in class objects, and so are easier to manage

         isolating access layers within wrapper classes promote portability/maintainability

         better support for separation of UI/business logic/data access = n-tier development

         promotes modular thinking in analysis, design

         easier to adapt many publicly-available object models to Access apps

         prepares you for transition to .NET and other fully object-oriented architectures

 

Disadvantages:

         can be more up-front work

         encapsulation of data access subverts Access's built-in database mechanisms (e.g. locking)

         can't call directly from macros, SQL; can't bind forms, etc. to classes/objects

         limited due to no true inheritance

         not available in Sharepoint Access databases (not likely to change owing to insecurity of VBA)

 

Links:

Example class add VB-like features to Access97 listbox: http://www.fmsinc.com/tpapers/97classes/index.html

Good collection like classes, like cStopWatch.cls: http://www.thevbzone.com

Access MVPs' code libraries, with some good uses of classes: http://www.rogersaccesslibrary.com/forum/forum_topics.asp?FID=3

Wrapper for image control: http://www.mvps.org/access/downloads/ImageClassVer11.zip

Calling a .NET Component from a COM Component (i.e. Access): http://msdn.microsoft.com/en-us/library/ms973802.aspx

Steve McConnell's "Code Complete, 2nd Edition": http://www.cc2e.com/

 

Informative discussion threads:

         "Faking inheritance in VBA to remove code duplication"

         "Try #2 - Inheritance work-around in VBA"

         "Good book on using Class objects in Access?"