OVH Cloud OVH Cloud

Ne pas faire rentrer de doublons

4 réponses
Avatar
phil
Bonjour,

Dans une simple application, je rentre des coordonnées de personnes : nom,
prénom, ...
Je souhaiterai :

1) Donner un code pour chaque personne différente
2) Qu'une personne déjà existente dans la base ne soit pas rentrée 2 fois au
niveau de ses coordonnées
3) Si une personne existe déjà, un message me l'annonce et ne l'intègre pas


Merci

4 réponses

Avatar
Marc ROBY
Bonjour,

Pour le 1), ajoutez un champ de numérotation auto,
Pour le 2), mettez un clé sur les champs considérés (avec doublons interdits
par exemple sur nom et prénom, de façon à ce que deux personnes puissent
avoir le même prénom, deux personnes puissent avoir le même nom, mais que
l'association nom ET prénom soit unique,
Pour le 3), si vous voulez être prévenu du doublon avant qu'Access le
refuse, vous pouvez utilisez l'événement Avant MAJ pour lancer une requête
qui prendra en critères le nom et le prénom saisi et ira voir si cette
association existe déjà, et enverra dans ce cas un message à l'utilisateur
pour le prévenir et annuler son action de validation de son formulaire.

J'ai choisi nom et prénom pour l'exemple.
Bien cordialement à vous,

--
Marc ROBY - CAPCODE Conseil
http://www.capcode-conseil.fr/

"phil" a écrit dans le message de news:
437b2f6d$0$20180$
Bonjour,

Dans une simple application, je rentre des coordonnées de personnes : nom,
prénom, ...
Je souhaiterai :

1) Donner un code pour chaque personne différente
2) Qu'une personne déjà existente dans la base ne soit pas rentrée 2 fois
au
niveau de ses coordonnées
3) Si une personne existe déjà, un message me l'annonce et ne l'intègre
pas


Merci




Avatar
david
Salut,

une petite remarque, en passant :
il est dangereux d'interdire formellement la création de doublon pour
des personnes physiques.
Comme on dit chez nous : il y a plus d'un ane qui s'apelle MARTIN !

Je te conseil plutôt d'afficher une boîte de dialogue indiquant
qu'une personne disposant des mêmes informations existe déjà en BDD.
Cela te permettra de référencer de jumeaux ayant le même premier
prénom (c'est assez fréquent) et qui habiteraient ensemble...

A+


Bonjour,

Pour le 1), ajoutez un champ de numérotation auto,
Pour le 2), mettez un clé sur les champs considérés (avec doublons interdits
par exemple sur nom et prénom, de façon à ce que deux personnes pui ssent
avoir le même prénom, deux personnes puissent avoir le même nom, ma is que
l'association nom ET prénom soit unique,
Pour le 3), si vous voulez être prévenu du doublon avant qu'Access le
refuse, vous pouvez utilisez l'événement Avant MAJ pour lancer une re quête
qui prendra en critères le nom et le prénom saisi et ira voir si cette
association existe déjà, et enverra dans ce cas un message à l'util isateur
pour le prévenir et annuler son action de validation de son formulaire.

J'ai choisi nom et prénom pour l'exemple.
Bien cordialement à vous,

--
Marc ROBY - CAPCODE Conseil
http://www.capcode-conseil.fr/

"phil" a écrit dans le message de news:
437b2f6d$0$20180$
Bonjour,

Dans une simple application, je rentre des coordonnées de personnes : nom,
prénom, ...
Je souhaiterai :

1) Donner un code pour chaque personne différente
2) Qu'une personne déjà existente dans la base ne soit pas rentré e 2 fois
au
niveau de ses coordonnées
3) Si une personne existe déjà, un message me l'annonce et ne l'int ègre
pas


Merci






Avatar
phil
Comment écrire en VBA le parcours de la liste des personnes, et relever par
rapport à une entrée une personne qui existe déjà dans cette base ?

Merci


"david" a écrit dans le message de
news:
Salut,

une petite remarque, en passant :
il est dangereux d'interdire formellement la création de doublon pour
des personnes physiques.
Comme on dit chez nous : il y a plus d'un ane qui s'apelle MARTIN !

Je te conseil plutôt d'afficher une boîte de dialogue indiquant
qu'une personne disposant des mêmes informations existe déjà en BDD.
Cela te permettra de référencer de jumeaux ayant le même premier
prénom (c'est assez fréquent) et qui habiteraient ensemble...

A+


Bonjour,

Pour le 1), ajoutez un champ de numérotation auto,
Pour le 2), mettez un clé sur les champs considérés (avec doublons
interdits

par exemple sur nom et prénom, de façon à ce que deux personnes puissent
avoir le même prénom, deux personnes puissent avoir le même nom, mais que
l'association nom ET prénom soit unique,
Pour le 3), si vous voulez être prévenu du doublon avant qu'Access le
refuse, vous pouvez utilisez l'événement Avant MAJ pour lancer une requête
qui prendra en critères le nom et le prénom saisi et ira voir si cette
association existe déjà, et enverra dans ce cas un message à l'utilisateur
pour le prévenir et annuler son action de validation de son formulaire.

J'ai choisi nom et prénom pour l'exemple.
Bien cordialement à vous,

--
Marc ROBY - CAPCODE Conseil
http://www.capcode-conseil.fr/

"phil" a écrit dans le message de news:
437b2f6d$0$20180$
Bonjour,

Dans une simple application, je rentre des coordonnées de personnes :
nom,


prénom, ...
Je souhaiterai :

1) Donner un code pour chaque personne différente
2) Qu'une personne déjà existente dans la base ne soit pas rentrée 2
fois


au
niveau de ses coordonnées
3) Si une personne existe déjà, un message me l'annonce et ne l'intègre
pas


Merci






Avatar
david
salut,

créer un recordset basé sur l'instruction SQL :
SQL_Str = "SELECT Count(*) As Nb FROM MaTable WHERE lCase(NomPers) = '"
+ Replace(lCase(Nom),"'","''") + "' lCase(PrenomPers)='" +
Replace(lCase(Prenom),"'","''") + "';"

avec Nom et Prenom les contrôles où sont saisies les valeurs.

La fonction Replace est très importante car elle permet de remplacer
les apostrophes par 2 apostrophes. Je sait c'est pas très clair à
l'écran.
La fonction lCase permet de tout mettre en minuscule (pas de question
à ce poser sur la comparaison sensible ou non à la casse).

Il ne reste plus qu'à ouvrir un recordset avec (cnx étant la
connexion à ta base) :
set rst = cnx.execute(SQL_Str)
if rst.EOF then 'Normalement, ce type de requête ne renvoi
jamais de "liste vide", mais on ne sait jamais
nb=0
else
nb=rst.Fields("Nb")
end if
rst.Close: set rst=nothing

Maintenant, nb vaut le nombre de personne ayant le même nom et le
même prénom (tu peux étendre avec l'adresse, ....).
Si tu veux la liste, remplace count(*) As Nb par * pour obtenir tout
les champs et nb=rst.fields("Nb") par nb=1. Mais dans ce cas, tu ne
sais pas combien il y en a (sauf si tu parcours la totalité de la
liste...).

A+