Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
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 17/04/2007, 14h53   #1
Membre éprouvé
 
Inscription : mai 2006
Messages : 661
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 661
Points : 462
Points : 462
Par défaut [Système]Problème d'accés concurrents ?

Bonjour,

Ma BDD est composée d'une dorsale placée sur le réseau, et de deux frontales. Mes enregistrements sont dotés d'un numéro auto.

Petit soucis, lorsqu'un des deux utilisateurs crée un nouvel enregistrement, il prend le bon numéro auto, mais lorsque l'autre utilisateur veut en créer un aussi, il prend le même numéro auto !

Apparament, tant que le premier utilisateur n'est pas sorti du formulaire de saisie de l'enregistrement en cours, l'autre personne peut prendre le même numéro auto en cliquant tout simplement sur un bouton "nouvel enregistrement"! Ce qui pose bien evidemment problème et bug tout.

Pourtant, je croyais qu'avec les numéros auto, Access empéchait ceci ! Si quelqu'un à une idée, merci.
Herman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2007, 22h43   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 482
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 482
Points : 7 577
Points : 7 577
Jamais eu un truc du genre et j'utilise les AutoNum à tour de bras.

Quelle est ta version d'Access ?

Ta base dorsale est une base Access ?

A+
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 05h50   #3
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
Bonjour,
Citation:
Envoyé par Herman
Apparament, tant que le premier utilisateur n'est pas sorti du formulaire de saisie de l'enregistrement en cours, l'autre personne peut prendre le même numéro auto en cliquant tout simplement sur un bouton "nouvel enregistrement"! Ce qui pose bien evidemment problème et bug tout.

Pourtant, je croyais qu'avec les numéros auto, Access empéchait ceci ! Si quelqu'un à une idée, merci.
Quelle version d'Access utilises-tu ?

Dans le passé, j'ai eu ce type de problème sur des bases de données Access 2000:
il pouvait arriver que, lors de l'ajout d'un nouvel enregistrement sur une certaine table, le numéro auto soit inférieur à ceux déjà utilisés, ce qui n'est techniquement pas possible.

Donc, on pouvait conclure que la table était partiellement corrompue: les données étaient toujours OK, mais le compteur de référence interne utilisé pour le numéro auto avait une mauvaise valeur.

Il me semble que la solution était une mise à jour du moteur de bases de donnée (alias JET). Mais je ne sais plus où ça se trouve (faut chercher... ).

Alors comment remettre le compteur au bon "prochain numéro auto" ?

Avant Jet 4.0 SP4, le compactage de la BD suffisait pour remettre ce compteur à la bonne valeur..

Depuis l'introduction de Jet 4.0 SP4, la seule manière de remettre le compteur au bon "prochain numéro auto" est de créer une nouvelle copie de la table corrompue, pour l'utiliser en lieu et place.
Microsoft propose aussi une solution en VBA avec la fonction ChangeSeed() qui intervient directement sur le compteur spécial qui fournit le prochain numéro auto (cf. la propriété Seed).
http://support.microsoft.com/kb/287756/en-us

En attendant, tu peux quand même effectuer un compactage de la BD, ça ne peut pas faire de mal.
=JBO= est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 08h26   #4
Membre éprouvé
 
Inscription : mai 2006
Messages : 661
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 661
Points : 462
Points : 462
C'est de l'Access 2003 pour les dorsales et la frontale.

En fait on dirait vraiment que l'enregistrement ne s'enregistre que lorsqu'on sort de celui ci dans le formulaire, et non pas quand le numéro auto se crée, d'où la possibilité au cas où 2 utilisateurs en crée un en même tps (très peu probable mais bon, ça a du arriver une fois en un an), ça leur attribue 2 fois le même numéro auto, et pof la base bug.
Herman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 08h41   #5
Rédacteur/Modérateur
 
Avatar de Domi2
 
Homme
Inscription : juin 2006
Messages : 6 233
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 52
Localisation : Suisse

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2006
Messages : 6 233
Points : 9 944
Points : 9 944
Envoyer un message via Skype™ à Domi2
Bonjour,

Dans les options, le verrouillage par défaut est bien à "Enregistrement verrouillé" ?

Et la propriété Verrouillage du formulaire à Enr modifié ?

Domi2
__________________
Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

Ici, on ne perd pas de temps ! On en passe...


Access : créer des codes-barres 128 en VBA
Access : les commandes intégrées des menus

Ce message (ou un autre) vous a aidé ? Votez pour lui avec
Domi2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 08h52   #6
Membre éprouvé
 
Inscription : mai 2006
Messages : 661
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 661
Points : 462
Points : 462
Sur le formulaire ça y était, mais pas dans les options, je vais tester ça merci.
Herman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 14h29   #7
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
Bonjour Herman et Domi2,

Et si on parlait un peu technique ?
Citation:
Envoyé par Domi2
Dans les options, le verrouillage par défaut est bien à "Enregistrement verrouillé" ?

Et la propriété Verrouillage du formulaire à Enr modifié ?
La technique utilisée par JET pour générer un Numéro Auto n'a pas de rapport avec le mode de verrouillage des enregistrements.

Citation:
Envoyé par Herman
En fait on dirait vraiment que l'enregistrement ne s'enregistre que lorsqu'on sort de celui ci dans le formulaire, et non pas quand le numéro auto se crée, d'où la possibilité au cas où 2 utilisateurs en crée un en même tps (très peu probable mais bon, ça a du arriver une fois en un an), ça leur attribue 2 fois le même numéro auto, et pof la base bug.
Le fait de débuter un ajout d'enregistrement implique l'attribution immédiate d'une valeur au champ de type Numéro Auto.
Cette attribution est sérialisée (au moyen d'un verrou qui contrôle l'accès à une propriété spéciale du champ concerné, et qui contient le prochain numéro auto à attribuer) et il ne peut pas y avoir deux attributions simultanées (c'est l'effet voulu obtenu grâce à la sérialisation).

De plus, cette attribution est toujours immédiatement entérinée par JET.
Concrètement, si l'ajout d'un enregistrement est finalement annulé, en revanche le compteur du champ numéro auto est incrémenté.

En revanche, il existe quand même des moyens de corrompre ce mécanisme.
Sur ce sujet, on peut lire avec intérêt l'excellent Allen Browne:
Fixing AutoNumbers when Access assigns negatives or duplicates
=JBO= est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 15h47   #8
Membre éprouvé
 
Inscription : mai 2006
Messages : 661
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 661
Points : 462
Points : 462
Pourquoi quand je commence un nouvel enregistrement, et que je vais voir dans la table si il s'est bien ajouté, il n'y est toujours pas ?

C'est seulement quand je quitte l'enregistrement sur le formulaire qu'il vient s'ajouter C'est surtout ça le problème. A la limite peu importe que par rapport à l'enregistrement précédent il y ai 1, 2, 5 ou 10 numéro d'écart !

Je vais encore chercher un peu d'où ça peut venir, et sinon tant pis, je dirais aux 2 personnes de se téléphoner avant d'utiliser la base ! ahah
Herman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 16h31   #9
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 Herman
Pourquoi quand je commence un nouvel enregistrement, et que je vais voir dans la table si il s'est bien ajouté, il n'y est toujours pas ?

C'est seulement quand je quitte l'enregistrement sur le formulaire qu'il vient s'ajouter C'est surtout ça le problème. A la limite peu importe que par rapport à l'enregistrement précédent il y ai 1, 2, 5 ou 10 numéro d'écart
Désolé, mais ce fonctionnement est tout à fait normal et souhaitable !

Je ne vois pas du tout où est le problème...

En revanche, ce que tu nous a expliqué initialement est un vrai problème:
Citation:
Envoyé par Herman
Petit soucis, lorsqu'un des deux utilisateurs crée un nouvel enregistrement, il prend le bon numéro auto, mais lorsque l'autre utilisateur veut en créer un aussi, il prend le même numéro auto !

Apparament, tant que le premier utilisateur n'est pas sorti du formulaire de saisie de l'enregistrement en cours, l'autre personne peut prendre le même numéro auto en cliquant tout simplement sur un bouton "nouvel enregistrement"! Ce qui pose bien evidemment problème et bug tout.
=JBO= est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 01h57   #10
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
Bonjour,

Pour rendre service à ceux qui seraient concernés...
Citation:
Envoyé par =JBO=
Il me semble que la solution était une mise à jour du moteur de bases de donnée (alias JET). Mais je ne sais plus où ça se trouve (faut chercher... ).
Voici un lien pour récupérer le dernier Service Pack pour le moteur de base de données Microsoft Jet 4.0:

http://support.microsoft.com/kb/239114/
=JBO= est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 09h00   #11
Rédacteur/Modérateur
 
Avatar de Domi2
 
Homme
Inscription : juin 2006
Messages : 6 233
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 52
Localisation : Suisse

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juin 2006
Messages : 6 233
Points : 9 944
Points : 9 944
Envoyer un message via Skype™ à Domi2
Bonjour,

A =JBO=

Citation:
La technique utilisée par JET pour générer un Numéro Auto n'a pas de rapport avec le mode de verrouillage des enregistrements.
Je le pensais, très naïvement

Merci en tout cas pour les précisions que tu nous as apportées.

A Herman

Désolé de t'avoir aiguillé sur une mauvaise piste

Domi2
__________________
Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

Ici, on ne perd pas de temps ! On en passe...


Access : créer des codes-barres 128 en VBA
Access : les commandes intégrées des menus

Ce message (ou un autre) vous a aidé ? Votez pour lui avec
Domi2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h17.


 
 
 
 
Partenaires

Hébergement Web