Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Empêcher la modification d'un champ d'une table access

4 réponses
Avatar
polux.6
Bonjour, je suis encore débutant en access vba, et je cherche un moyen
(comme dit dans le titre) d'empècher la modification d'un champ d'une
table access.

Je m'explique:
J'ai actuellement un projet contenant
prév.mdb --> contient toutes les tables de mon projet
prév.mde --> contient tout le code vba, les formulaires et les tables
liées de prév.mdb (fichier à lancer)

On peut donc ouvrir prév.mdb et accéder à toutes les tables et champs
en dehors de l'application. Seulement il y a un champ que je ne veut
pas que l'on puisse modifier dans cette base (alors que l'application
n'est pas lancée).

J'ai déjà essayé d'ajouter un contrainte en vba du type :

currentDB.Execute("ALTER TABLE Profil ADD CONSTRAINT cCode CHECK (
code = codeRecup );")
mais access me fait une erreur du type --> erreur dans la clause
CONSTRAINT.

J'ai également essayé d'autre requête pour limiter le nombre
d'enregistrement sur ces forums et il m'affiche toujours le même
message d'erreur.

Merci d'avance et bravo à tous ceux qui font tourner ce forum. J'ai
beaucoup appris grâce à lui

J'espère que j'ai été clair

@+ Polux.6

4 réponses

Avatar
Anor
Bonjour,
C'est un peu compliqué...

En premier lieu, je commencerais par mettre une barre de menus très simplifiée sur le mdb :
Quitter et Compacter ;-))

Ensuite, masquer la fenêtre de bdd au démarrage, désactiver la touche F11 (qui permet d'afficher
cette fenêtre).
Désactiver également la touche shift si pas suffisant.

Cela décourage déjà bon nombre de bidouilleurs....

Enfin, si les bidouilleurs sont des hackers potentiels, 2 possibilités :

1 - il y a très peu de données dans les champs de ta table => stocker les valeurs ailleurs
(base de registres, propriétés de bdd, ou mieux, dans le code vba d'un formulaire non modifiable
dès lors qu'on a transformé le mdb en mde.

2 - il y a beaucoup de données : une petite fonction d'encodage comme sur le site de walter
stucki,
dont la chaine qui permet l'encodage (sorte de mot de passe) sera elle aussi stocké dans le
source vba d'un .mde

3 - hyper sensible, alors voir du côté de la sécurité au niveau utilisateur, mais vraiment
dernier ressort,
c'est tellement lourd que le résultat pour les non initiés dont je fais partie, c'est qu'à la
fin, plus personne
ne peut rien modifier ;-)))

à+
--
Arnaud
--------------------------------------------------
Conseils d'utilisation : http://users.skynet.be/mpfa/
Site Perso : http://memoaccess.free.fr
/Réponses souhaitées sur ce forum, merci/
--------------------------------------------------


Polux.6 wrote:
| Bonjour, je suis encore débutant en access vba, et je cherche un moyen
| (comme dit dans le titre) d'empècher la modification d'un champ d'une
| table access.
|
| Je m'explique:
| J'ai actuellement un projet contenant
| prév.mdb --> contient toutes les tables de mon projet
| prév.mde --> contient tout le code vba, les formulaires et les tables
| liées de prév.mdb (fichier à lancer)
|
| On peut donc ouvrir prév.mdb et accéder à toutes les tables et champs
| en dehors de l'application. Seulement il y a un champ que je ne veut
| pas que l'on puisse modifier dans cette base (alors que l'application
| n'est pas lancée).
|
| J'ai déjà essayé d'ajouter un contrainte en vba du type :
|
| currentDB.Execute("ALTER TABLE Profil ADD CONSTRAINT cCode CHECK (
| code = codeRecup );")
| mais access me fait une erreur du type --> erreur dans la clause
| CONSTRAINT.
|
| J'ai également essayé d'autre requête pour limiter le nombre
| d'enregistrement sur ces forums et il m'affiche toujours le même
| message d'erreur.
|
| Merci d'avance et bravo à tous ceux qui font tourner ce forum. J'ai
| beaucoup appris grâce à lui
|
| J'espère que j'ai été clair
|
| @+ Polux.6
Avatar
polux.6
Salut et merci pour ta réponse.

Mais le pb c'est que je doit avoir accès à toutes les autres tables et
pouvoir modifier tous les champs manuellement dans le .mdb
Si je fais ce que tu me dis, si j'ai bien compris, on n'as plus du
tout accès aux tables

@+ Polux.6
Avatar
Anor
Bonjour,

Polux.6 wrote:
| Salut et merci pour ta réponse.
|
| Mais le pb c'est que je doit avoir accès à toutes les autres tables et
| pouvoir modifier tous les champs manuellement dans le .mdb
| Si je fais ce que tu me dis, si j'ai bien compris, on n'as plus du
| tout accès aux tables
|
| @+ Polux.6

eh bien oui puisque dans une base access, la saisie doit toujours se faire au travers de
formulaires
et *jamais* directement dans les tables.

Sinon, regarde plus bas, je t'avais posé une question ....
Ah tiens, ton logiciel de news ne cite pas les réponses, c'est inadmissible
qu'on mette encore sur le marché des logiciels qui perdent les données lorsqu'on les utilise !!!
;-)

je disais en gros que un champ dans une table peut correspondre à des millions
d'enregistrements.
et ça ne fait pourtant qu'un seul champ ....

alors la question ce n'est pas le nombre de champs mais le nombre d'enregistrements que
contiendra la table en question,
ou formulé d'une autre façon, le nombre de valeurs que va contenir le champ et savoir si ces
valeurs seront
figées ou si leur nombre changera.

La solution dépend de la réponse à ces questions précises

--
Arnaud
--------------------------------------------------
Conseils d'utilisation : http://users.skynet.be/mpfa/
Site Perso : http://memoaccess.free.fr
/Réponses souhaitées sur ce forum, merci/
--------------------------------------------------
Avatar
polux.6
En fait, cette table contient plusieurs champs mais ne con,tiendra
qu'un seul enregistrement. C'est un profil de l'utilisateur. Donc vu
qu'il n'y a qu'un enregistrement, le champs ne peut prendre qu'une
seule valeur.
SInon je suis d'accord logiquement, on ne doit pas pouvoir accéder au
données manuellement sans formulaire, mais ca m'a été demandé ... donc
je dois le faire ;-)

@+ et merci