Yes, I'm doing the checking from Access.
Yes, I'm using linked tables.
I created a library database (FE and BE) years ago and have been adding to it as needed. One of the tables in this database is the table that keeps track of who is using my databases.
The table looks something like this (off the top of my head):
strDatabaseName Text Field (This is the name of the Front End Database (user could be using more than one of my databases)
strComputerName Text Field
strPrimaryUserName Text Field (=CurrentUser)
strOfficeLocation Text Field
strPhoneNumber Text Field
ysnNewVersion Yes/No
ysnBroadcastMessage Yes/No
ysnShutDown Yes/No
Note that I have another table that defines everything I need to know about the database. That is, who requested it, what's its purpose, etc. Consequently, when populating the table above, strDatabaseName can be a combobox pulling from this table. This table provides many benefits later on in maintaining my databases.
I've created a Startup function in my library that all of my databases call.
1. The first thing it does is checks to see who the user is. If it's me, then it checks to see if the project is registered. If not, it pops up a form that forces me to register (document) the project so I don't forget.
2. All of my forms have a label on them indicating whether I'm linked to the "Live" or "Test" database. So this startup routine determines which database I'm linked to and stores it in a global variable for use by my forms. When the form opens and the user is me, then the label (or form's caption property) is set to Live or Test and made visible, else it's hidden from the user. This is done to prevent me from accidently updating live data.
3. Opens the table see if the computer has been registered. If not, it pops up a form, in my library, that asks the user to register the computer (i.e. Primary user name, phone number, office location).
4. Checks to see if the NewVersion flag is set. If it is, the database launches a job and the database exits. The job copies a new version to the user's machine and starts the database backup again. It also clears the NewVersion flag.
5. Checks to see if the Shutdown flag is set. If so, then the user is not allowed to get into the database at this time. I also have an invisible form running on a timer that checks to see if this flag is set (or the broadcast flag). If this flag is set then my invisible form issues an Application.Quit command, thus forcing the user out of the database. If the broadcast flag is set, a form in my library is popedup and displays the message I want the user to see (i.e. System going down in 5 minutes, please exit).
Having this information really comes in handy when trying to maintain multiple databases with several hundred users. But, regardless, if you have to put your database on more than one machine, it is still worth the effort of putting the above tables, etc. together. You don't have to do it all at once, just as needed.
And, no I can't give you the code because it is to well integrated in all my other stuff. So it would take me too long to strip out what you wouldn't need at this time (but would at some later date). Sorry