1. No difference
2. The FE should go on the user's machine for 2 reasons.
1) The main reason is that if you only have one copy on the server that everyone is using, sooner or later someone is going to corrupt the database. If that happens, all users are dead in the water. If the FE is on individual machines, and the db gets corrupted (less likely), then only one user is effected.
2) The screen will be displayed quicker if the FE is installed locally.
I have one database (Access 95) that is installed on 188 machines. This is how I handle it (search Tek-Tips for other methods).
I created a table that contains (among other things):
1. Name of the FE database
2. Name of the user's computer
3. Name of the primary user of the machine
4. Phone number of the primary user
5. Office location
6. New Version Flag
7. Broadcast message flag
8. Force user out of database flag
The user launches a batch job (vbscript) and the first thing the batch job does is opens the table to see if the Force User out of database flag is set. If so, then I don't want anyone in the database at this point, so I pop up a message that the system is currrently down and exit the batch job.
If that flag is not set, then I check to see if the New version flag is set. If so, then the batch job issues the command to copy the new version of the FE from the server to the user's machine, then clears the flag, and opens the database.
If this is the first time the database is run on the user's machine, then it hasn't been registered yet and no record exists in the table. Consequently, I open the database with a command argument to execute a macro. The macro opens a form the asks the user to register his/her pc (i.e. fill in the table information).
So, if I need to distribute a new version of my FE database, all I have to do is open the table and set the New Version flag for each machine. I have created a maintenence form that allows me to select just the machines I want to receive the new version (i.e. for testing purposes before it is released to everyone). This form also contains a button that will set all of the New version flags for me.
All of the systems I have put together use this same feature. That's why one of the fields in the table is the name of the database. Cosequently, I can filter the form so that it only shows the database I'm currently messing with.
Also, if you need to contact someone, you have their name, phone number, and location recorded.
At startup, I open a form (invisible) whose timer is set to 1 minute. Every minute the program checks to see if either the Broadcast message flag is set or the Force user out of database flag is set. If Broadcast message flag is set, then I pop up a form that displays whatever message I want the user to see (i.e. System going down in 5 minutes). Upon exiting, the flag is cleared. If the Force user out of database flag is set, then I issue the Application.Quit command which closes the user's database.
It may sound rather complicated, but it really is not and well worth the effort.
1. Create the table
2. Create the batch job
3. Create a form to register the user
4. Create a timer form
Once you have this information in place there are other things you can do, time permitting. For example, suppose someone has a lock on the database or you need everyone to get out of the FE and somebody is still in. There is a way to figure out WhosLoggedIn (search Tek-Tips, I've published some code that returns this info). Based on the information returned, you can have a form that shows who is still logged into the FE with their name, phone number, and office location included. Now you have a way to contact them.