Development Environment Methodology

B

Bob Dobalina

This is going to most likely be a stupid question, but I need to ask it. I am
an experienced Access developer and I am watching a peer do things that I
think are probably somewhat inefficient. Before I suggest anything, though, I
want to tap into this community to see if I am off base at all...

Are there any reasons why someone would take a live database down to work on
it instead of making a copy and then importing the changed objects later? As
it is, the database is brought down during peak user times to enable the
developer to work on it. Couldn't the developer work on a copy and then
import the modified objects when it is not peak time, thus enabling the
users to work at peak times?

Are there any issues around this that I should be aware of? This seems too
simple to be posting, but it's the simplicity of it that scares me.

I appreciate any insight or discussion that stems off of this post. thanks.
 
D

Douglas J. Steele

Actually, the database should be split into a front-end (containing the
queries, forms, reports, macros and modules), linked to a back-end
(containing just the tables). Only the back-end should be on the server:
each user should have his/her own copy of the front-end, preferably on their
hard drive (as opposed to on the server).

Since the developer has his own copy of the front-end, he can make whatever
changes he wants without impacting anyone. He should have a copy of the
back-end that he uses, too, to ensure that he doesn't inadvertently damage
the data if something doesn't work first time.

When you want to distribute the changes to the users, you simply give them a
new copy, overwriting their existing copy of the database. Tony Toews has a
free utility that streamlines this process at
http://www.granite.ab.ca/access/autofe.htm

--
Doug Steele, Microsoft Access MVP

(no e-mails, please!)



Bob Dobalina said:
This is going to most likely be a stupid question, but I need to ask it. I am
an experienced Access developer and I am watching a peer do things that I
think are probably somewhat inefficient. Before I suggest anything, though, I
want to tap into this community to see if I am off base at all...

Are there any reasons why someone would take a live database down to work on
it instead of making a copy and then importing the changed objects later? As
it is, the database is brought down during peak user times to enable the
developer to work on it. Couldn't the developer work on a copy and then
import the modified objects when it is not peak time, thus enabling the
users to work at peak times?

Are there any issues around this that I should be aware of? This seems too
simple to be posting, but it's the simplicity of it that scares me.

I appreciate any insight or discussion that stems off of this post.
thanks.
 
T

tina

well, if there are multiple users, the database should be split into FE and
BE components, preferably with a copy of the FE on each user's PC. so
working on the frontend would entail working on the (backed up) "master" FE
db anyway.
as for working on the BE, personally i prefer to pull it offline so no data
changes can be made, then makes changes in a copy of the offline db. that
way i don't have to mess with importing data from the "live" BE to the "new"
BE. however, changes to the BE database should be fairly rare, since you
shouldn't have to make changes to table structures very often.

my two cents worth. <g>


Bob Dobalina said:
This is going to most likely be a stupid question, but I need to ask it. I am
an experienced Access developer and I am watching a peer do things that I
think are probably somewhat inefficient. Before I suggest anything, though, I
want to tap into this community to see if I am off base at all...

Are there any reasons why someone would take a live database down to work on
it instead of making a copy and then importing the changed objects later? As
it is, the database is brought down during peak user times to enable the
developer to work on it. Couldn't the developer work on a copy and then
import the modified objects when it is not peak time, thus enabling the
users to work at peak times?

Are there any issues around this that I should be aware of? This seems too
simple to be posting, but it's the simplicity of it that scares me.

I appreciate any insight or discussion that stems off of this post.
thanks.
 
B

Bob Dobalina

This is really good stuff and I have never had the need to use this method.
I'm going to forward this on to the offending developer for his/her
information... (like the anonymous nature of the question? Not that I think
this person actually uses this resource. But just in case, I prefer not to
offend)

Here's a follow up question - If we KNOW that noone is going to be logged
onto the database for 30 minutes every day, why would we use the split method
instead of the develop and import method? Not sure how effortless this
utility is, but as long as you tack on a date modified to the object name it
should be easy to Import all new objects at once, right?

Just some thoughts. I appreciate your help on this. It's not my issue, but
I'm getting tired of hearing from the end users how it impacts their work day.

BD
 
L

Larry Linson

Ease of distribution is not the only reason... in fact, not even the primary
reason... for splitting a database. Having multiple users logged in to the
front-end or monolithic database significantly increases the chances of
database corruption.

Many go for a long time without trouble in that mode, but, suddenly, after
making some presumably-innocuous change, find themselves dealing with
corruption after corruption. And, while _most_ corruptions can be corrected
with Compact and Repair, not all can be corrected -- that means, you'd
better have a frequently-executed backup scheme and be prepared to re-enter
any data since the last backup when you have to recover.

See the information and links on database corruption in a multiuser
environment at MVP Tony Toews' site, http://www.granite.ab.ca/accsmstr.htm.
They are or lead to the best information on the subject that I have seen.

Larry Linson
Microsoft Access MVP
 
B

Bob Dobalina

Thanks again... I've been reading that page and I realized that I've used
that guy's stuff before for other reasons.... I think he had a suggestion on
solving the OpsLock problem by fixing the Jet engine... was two years ago.

To be honest, this issue is more of a user-interface issue as the database
is really not that data-heavy. So it has less to do with ease of distribtion
and more to do with keeping the users logged in during their workday. That's
no excuse for not using best practices (as outlined in Microsoft's own white
papers) but I seriously doubt this developer will ever use ebst practices. I
am actually just friends with some of the end users so I am looking out for
their interests. Selfish, huh?

Thanks again! Now to find a PC way to convey this to the appropriate
parties. fun.

BD
 
A

Albert D. Kallal

Here's a follow up question - If we KNOW that noone is going to be logged
onto the database for 30 minutes every day, why would we use the split
method
instead of the develop and import method?

Well, it is kind of funny, since the first question was how dumb it is to
have to kick out users. Now, we are starting to split hairs about knowing
that people are going to be logged out...maybe they are...maybe they are
not!!

Fact is, when people go for coffee, answer the phone...and *then* run out
for lunch..they often will NOT log out.

So, really, some debate about users logged in or not is rather silly when
you can run a split database. Also, running a split database allows you to
test the production version in a much easier fashion.
Not sure how effortless this
utility is, but as long as you tack on a date modified to the object name
it
should be easy to Import all new objects at once, right?

Gee, why even bother will all the work to track object names, object
dates..and go through some big import, or update process? Forget all of that
junk and simply distribute a brand new mde for use (these folks if at all
experienced do distribute a mde to each desktop..right???)

So, gee, object dates, importing...forgetting to import something..testing
after you import because you might forget one line of code that got changed
in some module...huh? I am trying hard to come up with a argument here for
some complex object tracking concept? Why even bother with such a complex
idea?

To update a with a split database is a simple file copy...not some complex
import thing that has to check and figure out object dates!

All I am saying is that running a split system is really nice. And, if you
think about all other software on your pc now...how is it setup?

If you think about this...it makes NO sense to have the code and data in the
same object. Can you imagine if when updating ms-word, you have to update
all the documents too? Fact is, when a new version of word comes out..you
install a new application on each computer (msword.exe). In the case of
ms-access applications, you issue a new application (usually a mde) and that
also goes on each new pc. However, that application is separate from the
word documents (in the case of word), and separate from the data in the
access application in the case your products that you develop.

So, I think we all realize that it makes sense to install Word, or Excel, or
whatever application is being made on each computer.Sure, we might share
some word documents on a server. And, we might even share some Excel
documents on a server. And, if you write you way cool job costing system in
ms-access, then just like every other program you can share the data on the
server. However, the actual application YOU make is installed on EACH pc
(just like every other application is installed). Remember, ms-access is a
development tool like VB, c++ or whatever. This is a product that creates
software. And, software you purchase (or crease for that matter) is
installed on each pc.

Of course, the data part can be shared on the server (just like we do with
word, or excel..but NO ONE is suggesting to install word, or Excel on the
server!!!). So, all these applications have the program and interface part.
This part of the application gets instated on each pc. And, most of the
programs then also have a data part they work with. Often, each program is
given their own extension. In fact, sometimes even people who use ms-access
database formats do this (for example, did you know the VERY popular Simply
Accounting software is based on the ms-access database format?). So, lots of
commercial products actually use the ms-access format..but they change the
file extensions (I don't think you need to do that...as it is not a big
deal).

So, assuming that these people have used word, or Excel etc, then I have to
assume they realize that these applications are installed on each pc. I also
have to assume that most developers realize it makes sense to separate the
application part from the data part. I think that just basic observations of
how just about every software product works would make this issue very clear
and obvious. Software created with ms-access is an exception to this rule in
that it allows you to have both data and the application part in the same
file. However, while we *can* do this, any developer will rapidly realize
this is a bad setup. Thankfully, ms-access does let one split the
application into a data part, and a application part, just like 99% of all
other software that developers create.

In a sense, all you have to do is look at how most software is setup...and
you will realize that splitting makes perfect sense. You really don't need
me to tell these people what is common sense..and how 99% of software being
run works this way..
 
R

Rosoc

I'll stick my 2 cents worth in also. If you've got
multilple users, DEFINITLY split your DB into FE/BE. All
you need do is read the posts in this NG of people who
don't, who end up with corrupted DBs and have other
issues, to realize the benefits of this configuration.

FE/BE makes it considerably easier to work on and update
your DBs. You don't need to take any production work off
line.

Lastly, Tony's deployer works pretty much seamlessly.
Terrific tool.
 
J

Joan Wild

Albert said:
So, gee, object dates, importing...forgetting to import
something..testing after you import because you might forget one line
of code that got changed in some module...huh? I am trying hard to
come up with a argument here for some complex object tracking
concept? Why even bother with such a complex idea?

Agreed. In addition, after importing objects, you need to compile and save
the project or you could be in serious trouble i.e.

http://support.microsoft.com/?kbid=304548
 
Top