You sometime hear that: "the ! refers to user-defined things and . refers to
Access-defined things." Although that is the standard rule of thumb, it is
not exactly correct. More precisely, the bang (!) serves to separate an
object from the collection which contains it, and the dot (.) serves to
separate one level of the DAO hierarchy from another.
Let me back up.
An Access object model (whether DAO or ADO) naming is hierarchical in
nature, sort of like DOS. And like DOS, you can refer to an object using a
fully qualified name or a semi-qualified name. In DOS, a fully qualified
name would be like this:
C:\MSOFFICE\ACCESS97\TEST.MDB
If you assume the default directory, you can refer to the file by it's
semi-qualified name: TEST.MDB.
So to, you can refer to an Access object by its fully qualified name:
DBEngine.Workspaces(0).Databases![c:\msoffice\access97\test.mdb].TableDefs!T
able1
or if you assume the default DBEngine (always), default Workspace, and
default Database, you can refer to the table by its semi-qualified name:
TableDefs!Table1.
If you look at the fully qualified name like this:
DBEngine.
Workspaces(0).
Databases![c:\msoffice\access97\test.mdb].
TableDefs!Table1
you can see the DAO hierarchy levels more easily and how the dot separates
them. (Much like the "\" in DOS).
The dot also serves to separate an object from its properties and methods,
which can also be thought of as another level in the hierarchy. So I can
refer to "TableDefs!Table1.RecordCount". RecordCount being a property of
Table1.
The bang (!) separates objects from the collections which hold them, thus it
separates "Table1" from the collection "TableDefs" and the object
"c:\msoffice\access97\test.mdb" from its collection "Databases".
Since most objects are named by you, and since levels of DAO hierarchy are
named by Access, we get the rule of thumb named earlier.
DAO Naming Rules:
1) The dot serves to separate one level of the DAO heirarchy from
another in a fully qualified object name.
2) The dot also serves to separate an object from its methods and
properties. (This, by the way, is the principle use for most people)
3) The bang serves to separate an object from the collection in which
it is contained.
ME is something of a special case in that the controls on a from are both 1)
a property of the form and 2) a lower level in the Object Model. I
generally use the dot with Me, because I get a pop-up of the fields
available, as I do with any other property.