Seems strange to me that the full data users can even see the design,
and stranger that I cannot turn this off without removing all their
other permissions.
Any help gratefully received. (NB DB cannot be split, don't ask)
An alternative is to deny all permissions on the tables, and use RWOP
queries for all data access. RWOP means run with owner permissions. It
allows users to access the tables as though the query owner was running the
query. They won't be able to open tables directly, nor read their design.
You just grant the necessary permissions on the query.
They shouldn't be able to get to the database window, though. You need to
Create custom menus/toolbars for use throughout your application.
Create a startup form (a main menu form if you have one) that is opened on
startup.
Use the features in Tools, Startup to
set the startup form
set your default menu (the custom one you made)
disable all the checkboxes about allowing built in menus, toolbars,
changes etc.
hide the db window (ensure the custom menu you create does not
include the Windows, Unhide item)
Click on the Advanced button and uncheck the allow special keys
(this will disable the F11 key, among others)
If you need to bypass these startup features, you can hold the shift key
down while you open the db. If you feel that your users may use this to
bypass your settings, you can disable the shift key bypass - there's an
example in help for doing this(look for AllowBypassKey) or at
http://www.mvps.org/access/modules/mdl0011.htm
and
http://www.mvps.org/access/general/gen0040.htm
You can also create a MDE from your database, which will prevent changes to
forms, reports and modules (If you do this, be certain to keep your original
mdb in case you need to make changes).
--
Joan Wild
Microsoft Access MVP
Bit strange though, limiting the choice of permissioins like that. Why
was it decided that all data users HAD to be able to see the design? I
don't want them to, and a simple check box would seem like the best way
to stop them. Confused!
I guess the thinking is this. If the database manager is going to give
you data from the table, it must certainly give you the field types.
(For example, you need to know whether a value 999999 is a numeric
value, or is actually a string value which happens to be all-digits in
this particular record.) And there are arguments for saying that it
should also give you the field names. And you can tell certain other
characteristics of the fields, by yourself. (For example, you can tell
whether a field is nullable, by trying to store a null in it. You can
tell whether it allows duplicates, by trying to store a duplicate
value, & so on.)
So, at the end of the day, if the database manager is going to give you
the /data/, plus the field types & names, & you can find out all those
other things yourself, then: voila! You are now in possesion of most of
the detailed design of the table.
IOW, I believe it doesn't make sense to say, "give me the data from
table X, but do not let me see, or determine, the detailed design of
that table".
HTH,
TC