MS Access sécurité au niveau utilisateur pour le formulaire à lire, mais le tableau à cacher

StackOverflow https://stackoverflow.com/questions/930654

  •  06-09-2019
  •  | 
  •  

Question

Peut la sécurité au niveau utilisateur d'accéder à permettre à une personne une forme, mais pas accéder à une table? J'ai une forme qui est relié à une table à l'aide d'une commande « SELECT ». Il n'a pas « Mettre à Jour » ou « Supprimer ». Je voudrais que l'utilisateur d'accéder à ma forme, mais je ne veux pas qu'ils soient en mesure de voir les détails dans le tableau sous-jacent. J'ai essayé toutes sortes de combinaisons dans l'assistant de sécurité au niveau utilisateur, mais pour une raison quelconque, ma forme page est vide, à moins que je donne un accès complet à l'utilisateur de faire quoi que ce soit. Des idées? Soit dit en passant, je suis sur Access 2003.

Pas de solution correcte

Autres conseils

Vous pouvez faire un fichier MDE et le donner à vos utilisateurs. Si vous faites cela, les utilisateurs ne seront pas en mesure de voir quoi que ce soit, mais l'interface utilisateur que vous avez fourni.

Si vos tables sont dans la même base de données d'accès que les formulaires et les requêtes, vous devez d'abord de « diviser la base de données » dans un frontend et backend. Voir:

http://databases.about.com/od/tutorials/ss /splitaccessdb.htm

pour plus d'informations sur la façon de le faire. Le frontend contient tout sauf les tables. Le backend contient les tables. Le frontend est liée aux tables de back-end en utilisant des objets « de table » liés dans le frontend.

Une fois la base de données est divisée, ouvrez le frontend dans Access et créer un fichier MDE en sélectionnant Outils / Base de données Utilitaires / Créer un fichier MDE dans la barre de menu. Le MDE est ce que vous fournissez aux utilisateurs. Ils ouvrent la même façon qu'ils le feraient toute autre base de données, sauf qu'ils ne peuvent concevoir l'un des objets.

Assurez-vous que vous avez une macro AUTOEXEC définie dans le frontend, de sorte que lorsque le MDE est ouvert par l'utilisateur, il a un point d'entrée. L'utilisateur ne peut pas voir l'un des objets du MDE, donc si vous ne disposez pas d'une macro AUTOEXEC pour ouvrir la première forme, rien ne se passera quand ils essaient d'ouvrir le MDE.

Si vous avez besoin de la capacité de gérer les tables liées à la MDE en permettant à l'utilisateur de se connecter à la base de données back-end avec une boîte de dialogue Fichier / Ouvrir, consultez l'article suivant:

http://www.mvps.org/access/tables/tbl0009.htm

Bien sûr, rien de tout cela empêche vos utilisateurs d'ouvrir la base de données back-end. Si vous avez besoin de sécurité plus forte, vous pouvez faire migrer la base de données back-end à SQL Server Express. Plus d'infos ici:

http://office.microsoft.com/en-us/access /HA102755371033.aspx

Qu'est-ce que vous cherchez est une requête RWOP. Cela signifie « courir avec la permission du propriétaire. »

Pour le faire fonctionner, vous supposant que vous avez déjà exécuté l'assistant de sécurité sur vos bases de données front-end et back-end et ont supprimé les autorisations pour les utilisateurs à lire, même les tables, vous créez ensuite une requête enregistrée comme RecordSource votre formulaire. Dans les propriétés de la requête, il est réglé par défaut sur RUN AUTORISATIONS « de l'utilisateur. » Un changement qui à « propriétaire de » et enregistrez la requête. La requête sera exécutée avec quelles que soient les autorisations sur la table de base, le propriétaire de la requête a. Si vous exécutez en tant qu'administrateur avec les autorisations, vous souhaitez définir les autorisations de la requête enregistrée en lecture seule (ou créez la requête dans une ouverture de session utilisateur qui a un accès en lecture seule aux tables - il est beaucoup plus facile faire l'ancien).

Quelques mises en garde:

  1. La sécurité au niveau utilisateur est délicat. Si vous manquez même une étape décrite dans le livre blanc de la sécurité ULS, votre application ne sera pas garantie. La façon de tester est d'ouvrir l'accès à un fichier de groupe de travail par défaut, puis voir si vous pouvez accéder aux objets dans votre base de données connecté en tant qu'utilisateur admin par défaut. Si vous le pouvez, alors vous avez fait une erreur quelque part le long de la ligne.

  2. La sécurité au niveau utilisateur est piratable par tous ceux qui veulent. Cela ne veut pas dire qu'il est pas utile, cela signifie simplement que ce n'est pas l'épreuve des balles. Je ne vous inquiétez pas à ce sujet tant, que je considère la sécurité autant un problème de personnes comme un problème technique - vous devez donner aux employés des privilèges suffisants pour faire leur travail, et vous avez leur faire confiance qu'ils ne seront pas abuser des privilèges vous leur avez donné.

  3. si vous utilisez Access 2007 et en utilisant le format ACCDB, les requêtes RWOP ne sont pas disponibles pour vous, comme Jet sécurité au niveau de l'utilisateur ne sont pas pris en charge pour le format ACCDB. Si vous utilisez le format MDB, cependant, il fonctionne très bien dans A2007.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top