Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Sécurité
Sécurité Le forum qui s'occupe de votre préoccupation de sécuriser l'accès à votre application Access, ainsi qu'à la sécurité des données.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/06/2008, 14h49   #1
Invité régulier
 
Inscription : avril 2008
Messages : 31
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : avril 2008
Messages : 31
Points : 8
Points : 8
Par défaut Mettre une base en réseau

Bonjour

j'ai actuellement crée une base de données qui est scindée en deux,une partie données placé sur le serveur et les formulaire,états ... sur tous les postes.
j'ai donc mes tables qui sont liés avec l'application
Le problème c'est que je souhaiterais que deux utilisateurs puissent modifier une même table en même temps. actuellement j'ai une erreur dans ma requête il précise que j'ai un violage de verrou.

Ce que je souhaiterais faire c'est par exemple l'un modifie un enregistrement et l'autre ajoute dans un nouvel enregistrement dans cette même table.
Je pensais que c'était lié au verrouillage mais j'ai mis que sur l'enregistrement modifié.
Ensuite j'ai mis l'ouverture en mode partagé pour la base et en exclusif sur l'application contenant les formulaires.
Donc j'aimerais savoir si il est possible que plusieurs utilisateurs travaillent en même temps sur la même table.

Actuellement j'ai réussi à savoir si ma table est verrouillé grâce au tuto de

http://access.developpez.com/faq/?pa...es#TableLocked

Merci d'avance de votre aide
tib59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2008, 22h33   #2
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 941
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 941
Points : 6 283
Points : 6 283
Bonsoir,

Oui il est possible à plusieurs utilisateurs de modifier une même table.

Regarde si cette discussion sur les options de verrouillage, peut t'apporter de l'aide.

Sinon, concernant ton erreur avec ta requête, quelle est la nature de cette requête ?


A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2008, 09h23   #3
Invité régulier
 
Inscription : avril 2008
Messages : 31
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : avril 2008
Messages : 31
Points : 8
Points : 8
Merci pour le lien
j'ai regardé et j'ai donc mis mes requêtes ainsi que les formulaires en verrouillage enregistrement modifié mais ça change rien.
Pour la première application, il n'y a pas de problème mais pour la deuxième quand j'ai fait ma requête d'ajout il m'indique que ma table est verrouillé par un autre utilisateur et donc qu'il ne peut pas mettre à jour 1 enregistrements à la suite de violations de verrous.
Donc le problème est simple à mon avis c'est juste une histoire de verrou que je ne sais pas vraiment comment paramétré.
tib59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 13h54   #4
En attente de confirmation mail
 
Inscription : février 2005
Messages : 1 731
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : février 2005
Messages : 1 731
Points : 2 010
Points : 2 010
Par défaut Maximiser le partage des données

Bonjour à tib59 et aussi LedZeppII ,

Citation:
Envoyé par tib59 Voir le message
Le problème c'est que je souhaiterais que deux utilisateurs puissent modifier une même table en même temps. actuellement j'ai une erreur dans ma requête il précise que j'ai un violage de verrou.
[...]
Ensuite j'ai mis l'ouverture en mode partagé pour la base et en exclusif sur l'application contenant les formulaires.
Pour maximiser le partage des données il faut toujours paramétrer Access ainsi:
- Mode d'ouverture par défaut: mode partagé,
- Verrouillage par défaut: aucun.

Le verrouillage pessimiste ou exclusif est ensuite à adapter selon les formulaires qui accèdent aux données.
Dans le cas d'Access 2000 (et précédent) où le verrouillage par page est contraignant, il vaut mieux utiliser le verrouillage optimiste.

Dans le cas d'un découpage dorsale/frontale, seul le paramétrage de la partie frontale est pris en compte.
En effet, seule la partie frontale est réellement exécutée et, par conséquent, elle seule contrôle la création et l'utilisation du fichier de verrouillage LDB.

Les paramètres "par défaut" influent directement sur la création du fichier LDB et, par voie de conséquence, peuvent limiter l'accès aux autres utilisateurs (cf. mes explications ci-après).

-=-=-=-=-=-=-=-=-=-

Je livre ici "ma compréhension" du fonctionnement d'Access (donc il ne faut pas prendre ça comme vérité absolue ).
Je serai content si d'autres membres du forum qui utilisent des versions différentes pouvaient confirmer (ou non) mes propos.

Versions d'Access et sous-système de gestion des données

Access est une application "cliente" qui met en oeuvre un sous-système de gestion de données, composé du moteur de bases de données (Jet) et de la couche d'accès à ces données (DAO ou ADO, pour se limiter).

(je ne parle pas des projets ADP bien sûr).

Selon les versions d'Access, le sous-système de gestion de données mis en oeuvre "nativement" est:
>> DAO-Jet jusqu'à Access 2000
>> ADO-Jet à partir d'Access XP.

(remarque: si quelqu'un a d'autres infos je suis intéressé !)

Ce que je veux dire par << mis en oeuvre "nativement" >> c'est que nous n'avons pas la maîtrise du sous-système de gestion de données lors de l'utilisation de l'interface d'Access et des objets de bases de données: tables, requêtes, états et formulaires (quoiqu'il soit possible dans ce dernier cas de modifier par programmation le RecordSet mais bémol...).

En programmation VBA, l'objet DoCmd utilise "nécessairement" le sous-système de données imposé par sa version d'Access.

Cette différence de sous-système de gestion des données est importante parce qu'elle induit des fonctionnements parfois contradictoires avec les spécifications d'Access.

Un exemple de contradiction:
>> le verrouillage par enregistrement fonctionne correctement avec Jet 4.0 et ADO;
>> le verrouillage par enregistrement ne fonctionne pas correctement avec Access 2000 (même si tout est paramétré pour ça) car DAO ne le gère pas correctement.
Ainsi, avec Access 2000, si on ouvre un formulaire dépendant d'une source de données, et qu'on modifie un seul enregistrement de la source de données, c'est quand même toute la page (qui contient l'enregistrement) qui est verrouillée.
En revanche, je ne crois pas que ce soit le cas avec Access 2003 qui "respecte" le verrouillage par enregistrement (grâce à ADO).

Un exemple de différence "fondamentale" entre ADO et DAO: le langage SQL "compris" n'est pas le même !
D'où la conséquence selon les versions d'Access.
>> En Access 2000, les requêtes développées avec l'interface d'Access utilisent le SQL compris par DAO (plus limité, SQL ANSI 89).
>> En revanche, à partir d'Access XP, ces requêtes utilisent le SQL compris par ADO (SQL ANSI 92).

Importance des conditions de création du fichier de verrouillage (LDB)

Le contrôle de l'accès à un fichier de bases de données MDB est réalisé au moyen d'un fichier de verrouillage qui porte le même nom que le fichier de bases de données avec l'extension LDB.

Dans un contexte multi-utilisateur, il faut savoir que la première application qui crée le fichier LDB va imposer ses conditions (son paramétrage) aux autres applications.

Ainsi, si une application Access est paramétrée pour un verrouillage par page, elle créera un fichier LDB avec cette contrainte.
Les autres applications qui pourraient ensuite accéder au fichier MDB avec un verrouillage par enregistrement se verront limitées au verrrouillage par page, pour se conformer au paramétrage du fichier LDB.

Vous voyez le piège dans des environnements où les applications ne sont pas homogènes !
_
=JBO= est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 15h32   #5
Invité régulier
 
Inscription : avril 2008
Messages : 31
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : avril 2008
Messages : 31
Points : 8
Points : 8
Merci pour ton aide mais le problème est toujours le même j'ai changer comme tu le précise les paramétrage d' access mais je n'arrive toujours pas a faire un ajout sur la table et une modification sur cette même table en même temps mais sur un autre enregistrement.
Donc il me verouille la table completement
Desolé je suis pas très doué pour access au niveau du réseau
Peut-être n'ai-je pas bien lu ce que tu a marqué.
tib59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 16h03   #6
En attente de confirmation mail
 
Inscription : février 2005
Messages : 1 731
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : février 2005
Messages : 1 731
Points : 2 010
Points : 2 010
Citation:
Envoyé par tib59 Voir le message
Merci pour ton aide mais le problème est toujours le même j'ai changer comme tu le précise les paramétrage d' access mais je n'arrive toujours pas a faire un ajout sur la table et une modification sur cette même table en même temps mais sur un autre enregistrement.
Donc il me verouille la table completement
Desolé je suis pas très doué pour access au niveau du réseau
Peut-être n'ai-je pas bien lu ce que tu a marqué.
Quelle(s) version(s) d'Access utilises-tu ?

Revois toutes applications les Access ainsi que tous les formulaires et applique les paramètres ci-dessous:

Options d'Access / Onglet avancé:
* Mode d'ouverture par défaut: Mode partagé
* Verrouillage par défaut: Aucun (verrouillage optimiste)

Pour les formulaires, dans la fenêtre des propriétés, onglet Données:
* Verrouillage: Aucun (verrouillage optimiste)

Si les formulaires utilisent des requêtes Access, il faut modifier ces requêtes, en mode création, afficher la fenêtre de propriétés de la requête:
* Verrouillage: Aucun (verrouillage optimiste)

[EDIT]
Il faut aussi refermer toutes les applications qui accèdent au fichier MDB (après les avoir reparamétrées) afin de regénérer un nouveau fichier LDB.
[/EDIT]

Ainsi paramétré, cela *DOIT* fonctionner.
Si ça ne fonctionne toujours pas, c'est que tu as oublié quelque chose...

Bon courage.
_
=JBO= est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 17h10   #7
Invité régulier
 
Inscription : avril 2008
Messages : 31
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : avril 2008
Messages : 31
Points : 8
Points : 8
Je viens de verifier tous mes formulaires que j'utilise mais cela ne change rien
j'ai aussi cocher puis decocher la case " ouvrir avec les enregistrements verouillés"
J'ai aussi verifier la base contenant seulement les données, elle était bien en mode partagé et verrouillage par défaut aucun
Les requetes de mes formulaires fonctionnent correctement quand je ne veux pas faire deux actions sur la même table

La version que j'utilise est la 2007.
Par contre je pense pas que cela puisse jouer mais le format de mes bases est mdb et non mde
je viens de penser à ça aussi, ça serait très bête mais je n'y avais pas penser avant. Pour l'instant j'utilise pas vraiment la base en réseau, j'ouvre mes 2 fichiers access sur le même ordinateur et la base est sur toujours le même. Je vais tester si ça peut provenir de ça
tib59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 18h08   #8
En attente de confirmation mail
 
Inscription : février 2005
Messages : 1 731
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : février 2005
Messages : 1 731
Points : 2 010
Points : 2 010
Citation:
Envoyé par tib59 Voir le message
Je viens de verifier tous mes formulaires que j'utilise mais cela ne change rien
j'ai aussi cocher puis decocher la case " ouvrir avec les enregistrements verouillés"
J'ai aussi verifier la base contenant seulement les données, elle était bien en mode partagé et verrouillage par défaut aucun
Les requetes de mes formulaires fonctionnent correctement quand je ne veux pas faire deux actions sur la même table
Le paramétrage de la base dorsale (contenant les données) n'a pas réellement d'importance. Ce qui compte ce sont les applications Access qui sont exécutées, ici les bases applicatives frontales, et à 3 niveaux:
* options générales d'Access,
* propriétés du formulaire,
* propriété des requêtes.

Attention !
Il faut bien penser à fermer toutes les applications qui accèdent au fichier MDB pour que les paramétrages soient pris en compte au prochain démarrage.

Citation:
Envoyé par tib59 Voir le message
La version que j'utilise est la 2007.
Par contre je pense pas que cela puisse jouer mais le format de mes bases est mdb et non mde
Personnellement, je n'ai aucune idée du bon fonctionnement multi-utilisateur des fichiers MDB avec Access 2007.

Citation:
Envoyé par tib59 Voir le message
je viens de penser à ça aussi, ça serait très bête mais je n'y avais pas penser avant. Pour l'instant j'utilise pas vraiment la base en réseau, j'ouvre mes 2 fichiers access sur le même ordinateur et la base est sur toujours le même. Je vais tester si ça peut provenir de ça
Le fonctionnement multi-utilisateur est le même que dans le cas d'applications en réseau.
=JBO= est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 18h58   #9
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 941
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 941
Points : 6 283
Points : 6 283
Bonjour,

Merci =JBO= pour ton aide précieuse.

Citation:
Envoyé par tib59
Donc il me verouille la table completement
tib59, est-ce que tu te bases sur le résultat de la fonction de la faq pour dire que ta table est verrouillée ?
Parce que à mon sens, cette fonction permet de savoir s'il est possible de verrouiller entièrement une table ou pas.
Elle renvoie systématiquement Vrai dès qu'il y a un jeu de données ouvert sur la table. Même s'il n'y a aucun verrou.

Quelle erreur ou message d'erreur as-tu quand tu exécute ta requête AJOUT ou MODIFICATION ?

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 21h25   #10
Invité régulier
 
Inscription : avril 2008
Messages : 31
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : avril 2008
Messages : 31
Points : 8
Points : 8
Bon j'ai bien vérifié une nouvelle fois tous mes paramètres mais ça ne fonctionne toujours pas
Pour le verrouillage de la table j'ai bien utilisé la fonction de la faq
j'ai une erreur 3009 qui m'apparait
Citation:
vous essayé de verrouiller la table clients pendant son ouverture mais elle ne peut pas être verrouillée car elle est en cours d'utilisation
par contre j'ai du changé le contenu de la variable db de type dao.database pour que ça fonctionne mais je ne sais pas si je l'ai bien fait correctement.

set db =DBEngine.Workspaces(0).OpenDatabase("base.accdb")


sinon directement au niveau de la requête voici le message
Citation:
Microsoft ..... n'a pas mis à jour 0 champ à cause d'un échec de conversion de type, 0 enregistrements à la suite de violations de clé 1 enregistrements à la suite de violation de verrou
Une petite idée du bug ??
Merci encore une fois de l'aide que vous m'apportez
tib59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 14h49   #11
Invité régulier
 
Inscription : avril 2008
Messages : 31
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : avril 2008
Messages : 31
Points : 8
Points : 8
Bon je trouvais une solution qui marche mais bon c pas extra
le truc c'est que quand deux personnes veulent ajouter ou modifier sur une meme table je dis simplement qu'il doit attendre que l'autre ait terminé comme je sais si oui ou non la table est verrouillée
voila merci beaucoup de votre aide
tib59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h01.


 
 
 
 
Partenaires

Hébergement Web