Dear Cap'n Dave:
A project will have controls and logical development only when the person
who is designing it is able to control it and impose logic on it, and when
that person has the authority to do so. Otherwise, it will stay that way.
The principle is that the universe is chaotic, and only management ever
changes that. So, either make sure you have the authority to impose order
and make decisions, or that someone else who is competent to do the job has
the authority. To make someone responsible for a product and not give them
authority to make it work ensures failure. Success happens when
responsibility, authority, and competence come together under one roof. You
had better determine if the environment can be structured for success, or
not waste your time.
So much for design philosophy. But I recommend you use the tools and
arguments I've just put forward.
Now, being a Cap'n and in a war zone, it sounds military to me. You would
then be very aware of the linkage between responsibility and authority.
That would be a good thing. Chain of command is just what you need.
1. Absolutely no question. YES!
2. Replication syncs data, not program changes. It may be simple and
sufficient to announce program changes and make sure everyone using the
program, and getting the announcement, knows they must get the program
changes before proceeding. The program changes could be distributed by
email attachment (if the attachment would not be too large) or by copying
from the server. This can also be automated if desired, so the program
checks the date on the currently installed version against the newest
version available on the server, and just goes to get the new one. This can
be done every time the user initiates a session. But that would depend on
them closing their session every time they finish and leave the computer.
Not leaving a session open is a very good security procedure anyway, and
this is the time to pull rank. Make sure they do this. If you are at the
server, you will be able to tell when they do or do not log off when off
duty. You can even build into the program to log the Computer Network Name
of every client computer along with the date and time into a table recording
every log in and log out. Then you'll know just what is going on when you
need to check.
3. With limited bandwidth and a distributed network, I would really opt for
an MSDE back end rather than Jet. This may take some hard study on your
part, as you'll be running the database as SQL Server rather than Jet. How
will your connections be made? Will you set up a wide area network (or you
may already have one). Or would you use VPN connections with the internet?
The latency of the wide area network or with VPN is a KILLER for performance
with a typical MDB / Jet setup. Even with ADP / MSDE it will not be as fast
as you might like, but it will almost certainly be at least acceptable. I
have seen a difference in performance for an application of 500:1 between
the two. The ADP / MSDE approach is just acceptable. The MDB / Jet
approach has you sitting for as much as an hour, just trying to load a
complex form. Likely you would not have any forms as complex as I did, but
it might still be 5 or 10 minutes just to get a form up.
The kinds of questions you have asked are excellent, and that bodes well for
the eventual success of your project. I hope I may have been able to
contribute even slightly to that. Best wishes! And, if I'm correct about
your military situation, my deeply felt thanks.
Tom Ellison