|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : avril 2008 Messages : 31 ![]() |
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 |
|
|
00
|
|
|
#2 |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 941 ![]() |
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+ |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : avril 2008 Messages : 31 ![]() |
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é. |
|
|
00
|
|
|
#4 | |
|
En attente de confirmation mail
Inscription : février 2005 Messages : 1 731 ![]() |
Bonjour à tib59
et aussi LedZeppII Citation:
- 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 ! _ |
|
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : avril 2008 Messages : 31 ![]() |
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é. |
|
|
00
|
|
|
#6 | |
|
En attente de confirmation mail
Inscription : février 2005 Messages : 1 731 ![]() |
Citation:
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. _ |
|
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : avril 2008 Messages : 31 ![]() |
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 |
|
|
00
|
|
|
#8 | |||
|
En attente de confirmation mail
Inscription : février 2005 Messages : 1 731 ![]() |
Citation:
* 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:
Citation:
|
|||
|
|
00
|
|
|
#9 | |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 941 ![]() |
Bonjour,
Merci =JBO= pour ton aide précieuse. Citation:
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+ |
|
|
|
00
|
|
|
#10 | ||
|
Invité régulier
![]() Inscription : avril 2008 Messages : 31 ![]() |
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:
set db =DBEngine.Workspaces(0).OpenDatabase("base.accdb") sinon directement au niveau de la requête voici le message Citation:
Merci encore une fois de l'aide que vous m'apportez |
||
|
|
00
|
|
|
#11 |
|
Invité régulier
![]() Inscription : avril 2008 Messages : 31 ![]() |
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 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com