S
Stephen J. Levine MD
I am now starting to question why giving each client a
copy of an mde front end is considered best practice in a
multi-user environment using Access 2002.
Understand that I am not questioning the best practice of
splitting the database. I support this practice in part
because I believe that, long term, the database itself in
a multiuser environment should be placed on Oracle or SQL
Server as I do not feel JET is robust enough for this
deployment. I understand that Microsoft appears to be
heading toward using Access as a front end for SQL Server.
There appears to be very little in the literature to
support individual front end copies on the client as best
practice, other than a statement on an Microsoft Access
2003 document cited on other threads pertaining to this
topic and strong statements by some on this Newsgroup
that violating this practice is tantamount to
incompetence. When the discussion goes to the logical
corrollary question as to whether each instance on a
client needs to use its own copy of the fe, the responses
generally have been weak, derogating the questioner for
suggesting the need for multiple instances rather than
addressing the question directly. This so far is
implying that the data supporting this practice with
regard to Access 2002 may not be good, if it even exists.
For example, with my own application, all session-
specific data is stored in public and private variables
and arrays rather than in temporary tables or database
properties. Static settings, including the menubar, are
stored as properties of the database.
I understand that startup properties are static
attributes of the database and not dynamic attributes of
the session, and thus cannot be altered in a multiuser
environment where a single fe is used. This became
apparent as I was developing a subsidiary application
where I wanted to change the menubar based on security.
That approach has been abandoned.
The only personal experience that I had supporting
separate fe's for each client was that the criteria for
one of my record lookups using a form called Event became
a permanent value of that form's filter property, thus
raising the question as to whether this property was
handled during sessions as a property of the form and
thus raising the risk that this value in one session
could be altered by a simultaneous session using the same
fe file.
To attempt an answer of this question, I performed this
test, using the same access front end, in this case
an .mdb for convenience to see if two instances of this
front end could interfere with each other:
At start of test, in dbwindow of each instance before
launching form in either instance:
Instance 1:forms!event.filter = "Etracking = 127"
Instance 2:forms!event.filter = "Etracking = 127"
In instance 1, look up event form record where etracking
= 128. Then examine values of forms!event.filter.value
in design view in both instances:
Instance 1:forms!event.filter = "Etracking = 128"
Instance 2:forms!event.filter = "Etracking = 127"
Exit back to dbwindow view in Instance 1. In instance 2,
look up event form record where etracking = 130. Then
examine values of forms!event.value in design view in
both instances:
Instance 1:forms!event.filter = "Etracking = 127"
Instance 2:forms!event.filter = "Etracking = 130"
Exit back to dbwindow view in Instance 2. Then examine
values of forms!event.filter.value in design view in both
instances:
Instance 1:forms!event.filter = "Etracking = 127"
Instance 2:forms!event.filter = "Etracking = 127"
Conclusions: Lookups of different records in two
different instances of the same access front end do not
interfere with each other.
I suspect that the forms!event.value of "Etracking = 127"
was set in the past at some time during development when
design changes were saved in the form on exit. As this
form is no longer being changed in this version this is
no longer at risk of change, and, in future versions,
before implementation, this property will be cleared.
What is very reassuring is the warning, each time I went
into design mode to look up the value of this form's
property, I received the warning that the file was not
opened exclusively and thus no changes would be saved.
While this little exercise does not debunk the best
practices standard of a separate mde fe copy for each
client, it does call it into question. Because this best
practices standard seems at variance with what would be
considered best electronic version control practice,
which would be a single copy in one place, I need
documentation further supporting or refuting this
standard. Because the standard, as it stands, at our
institution, would mean separate copies for each user
instance on a client, we really need to know more about
the reasoning behind it and how it would apply to this
application considering it was coded to allow multiple
instances through use of dimensioned variables and arrays
for session-dependent data.
sjl
copy of an mde front end is considered best practice in a
multi-user environment using Access 2002.
Understand that I am not questioning the best practice of
splitting the database. I support this practice in part
because I believe that, long term, the database itself in
a multiuser environment should be placed on Oracle or SQL
Server as I do not feel JET is robust enough for this
deployment. I understand that Microsoft appears to be
heading toward using Access as a front end for SQL Server.
There appears to be very little in the literature to
support individual front end copies on the client as best
practice, other than a statement on an Microsoft Access
2003 document cited on other threads pertaining to this
topic and strong statements by some on this Newsgroup
that violating this practice is tantamount to
incompetence. When the discussion goes to the logical
corrollary question as to whether each instance on a
client needs to use its own copy of the fe, the responses
generally have been weak, derogating the questioner for
suggesting the need for multiple instances rather than
addressing the question directly. This so far is
implying that the data supporting this practice with
regard to Access 2002 may not be good, if it even exists.
For example, with my own application, all session-
specific data is stored in public and private variables
and arrays rather than in temporary tables or database
properties. Static settings, including the menubar, are
stored as properties of the database.
I understand that startup properties are static
attributes of the database and not dynamic attributes of
the session, and thus cannot be altered in a multiuser
environment where a single fe is used. This became
apparent as I was developing a subsidiary application
where I wanted to change the menubar based on security.
That approach has been abandoned.
The only personal experience that I had supporting
separate fe's for each client was that the criteria for
one of my record lookups using a form called Event became
a permanent value of that form's filter property, thus
raising the question as to whether this property was
handled during sessions as a property of the form and
thus raising the risk that this value in one session
could be altered by a simultaneous session using the same
fe file.
To attempt an answer of this question, I performed this
test, using the same access front end, in this case
an .mdb for convenience to see if two instances of this
front end could interfere with each other:
At start of test, in dbwindow of each instance before
launching form in either instance:
Instance 1:forms!event.filter = "Etracking = 127"
Instance 2:forms!event.filter = "Etracking = 127"
In instance 1, look up event form record where etracking
= 128. Then examine values of forms!event.filter.value
in design view in both instances:
Instance 1:forms!event.filter = "Etracking = 128"
Instance 2:forms!event.filter = "Etracking = 127"
Exit back to dbwindow view in Instance 1. In instance 2,
look up event form record where etracking = 130. Then
examine values of forms!event.value in design view in
both instances:
Instance 1:forms!event.filter = "Etracking = 127"
Instance 2:forms!event.filter = "Etracking = 130"
Exit back to dbwindow view in Instance 2. Then examine
values of forms!event.filter.value in design view in both
instances:
Instance 1:forms!event.filter = "Etracking = 127"
Instance 2:forms!event.filter = "Etracking = 127"
Conclusions: Lookups of different records in two
different instances of the same access front end do not
interfere with each other.
I suspect that the forms!event.value of "Etracking = 127"
was set in the past at some time during development when
design changes were saved in the form on exit. As this
form is no longer being changed in this version this is
no longer at risk of change, and, in future versions,
before implementation, this property will be cleared.
What is very reassuring is the warning, each time I went
into design mode to look up the value of this form's
property, I received the warning that the file was not
opened exclusively and thus no changes would be saved.
While this little exercise does not debunk the best
practices standard of a separate mde fe copy for each
client, it does call it into question. Because this best
practices standard seems at variance with what would be
considered best electronic version control practice,
which would be a single copy in one place, I need
documentation further supporting or refuting this
standard. Because the standard, as it stands, at our
institution, would mean separate copies for each user
instance on a client, we really need to know more about
the reasoning behind it and how it would apply to this
application considering it was coded to allow multiple
instances through use of dimensioned variables and arrays
for session-dependent data.
sjl