Jay,
My group distributes compiled Access apps to 700+ education entities for
budget and financial reporting to the state gov't. We have used a FE/BE
approach for years--all user tables in BE, all other components in FE. Any
tables of reference data, system controls and parameters, etc. are also in
FE. FE is always compiled into .mde.
The source FE.mdb has the VBA project password-protected (vb editor, tools,
project properties, protection tab, "lock project for viewing" checked,
enter and confirm password).
I know this prevents importing. Anytime I want to import a module to another
app, I have to make a copy of the .mdb with the code, open the copy, open
project in VB ed. with the password, then uncheck locked, and remove
password, before I can import a module to another app.
I'm using Office 2000 pro, Win 2000, but I think this is pretty much the
same in later Access versions as well.
Like the other posters, I would never release an app as .mdb. We have to
many clever tech support people at schools who try to hack and override our
calculations, validations, etc. etc. just for fun. For our apps, the BE is
..mdb (not .mde), but it's also password-protected. In the FE, the user has a
"relink" button, and in that code the connect string passes the password
when relinking to a different or new BE. Since the FE code is compiled, no
one can see the BE password.
We've been doing this for about seven years on three or four major apps a
year, and I have yet to have anyone break into a FE or BE, or get at VBA.
Not saying it's perfect, but it's pretty airtight.
Also, when neede, we've added and updated tables in the backend, by running
code from the compiled FE. I'd have to dig around to find the code, but I
think it involves opening a copy of the backend as an Access object, then
running the commands to add/update the required objects, then saving it,
delete old BE copy, rename new BE as old BE. We did this because it was
critical to preserve data users had already entered into the app.
We release FE updates as self-extracting WinZip .exes that simply extract
the new FE version to the expected folder location, overwriting the old
version. Users are instructed at startup to click a "Run Updates" button on
main menu. This executes any required code to update BE tables/records, or
if needed, add/change BE objects. Sometimes we don't have any BE updates,
but users are always told to click the button anyway; if all the version
changes are in the FE, the button simply displays the "updates installed"
message. No harm done and the users feel warm and fuzzy about the process.
Hope this helps...