I need to be able to lock my database
from any changes to the forms, reports
or tables, but still need users to be able
to input data. Can this be done?
It can be done with Access' security. Visit
http://www.microsoft.com/downloads, download, read, re-read, and study the
Security FAQ. It's 39 single-spaced pages that contain NO filler material.
Access security was described by Roger Jennings, back in Access 2.0 days as
"labrynthine", and it's no less so now. But, with some effort, it can be
understood. It is definitely _not_ foolproof, but someone would seriously
have to want to get at your information to spend the money to break it.
I don't worry much about securing my forms and reports, because any Access
developer with anything-more-than-minimal experience can look at them and
re-create them in a short period of time.
Compiling to MDE will lock your VBA code and prevent Forms and Reports with
code from being opened in design view (but that doesn't prevent someone with
permissions on those Forms and Reports from writing code in another database
that will programmatically extract the properties of the Form and all the
Objects on the Form... that would allow either manual or programmatic
re-creation of the Form or Report). But, even so, the "hacker" would have to
determine what you'd done in code and reinvent that to _copy your
application_.
So, the answer is "Yes, you can do what you want." And the followup
statement is "But your work may not be as protected as it would seem even
though you can."
Larry Linson
Microsoft Access MVP