cs_Michele
Messages postés25Date d'inscriptionlundi 28 janvier 2002StatutMembreDernière intervention11 juin 2006
-
10 juin 2006 à 08:31
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
17 juin 2006 à 17:06
Bonjour
Je cherche depuis pas mal de temps à extraire de ma base de données les
enregistrements de deux champs, mais à exclure les enregistrements lorsque
le
champ email est dupliqué ou vide ce qui n'est pas le cas avec la requete
ci-dessous
SqlEmail = "SELECT DISTINCT email, NomPrenon FROM Membre where echeance > #"
& MaDate & "# ORDER BY NomPrenon"
Merci pour votre aide
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 11 juin 2006 à 13:03
Salut
Pour les enregistrements dupliqués, "Distinct" devrait fonctionne, mais je crois que Distinct s'adresse à l'ensemble des champs demandés : Donc il faudra que "email" et "NomPrenom" soient indentiques pour que la requète les exclue.
Tu peux aussi délaisser ce problème sous SQL et traiter le problème une fois les données reçues et écarter les données en double.
Tester les champs vides : Suffit d'ajouter une clause :
"Select Distinct email, NomPrenon " & _
" From Membre " & _
" Where echeance > #" & MaDate & "# " & _
" And email is not null " & _
" Order By NomPrenon"
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accro
cs_Michele
Messages postés25Date d'inscriptionlundi 28 janvier 2002StatutMembreDernière intervention11 juin 2006 11 juin 2006 à 20:44
Bonsoir
Merci pour ta reponse
Distinct fonctionne correctement si les deux champs sont identiques et il n'est pas necessaire de mettre la clause is not null car dès que l'un des deux champs est vide l'enregistrement n'est pas affiché.
Je pense que j'ai du mal formuler ma demande en fait je veux afficher tous les enregistrements uniques du champ email ceci a pour but de ne pas envoyer deux fois le même email.
mais comme une adresse email n'est pas representative je veux conserver le champ NomPrenom lié à chaque adresse email
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 17 juin 2006 à 17:06
Salut
Alors il faut le faire en deux étapes :
- Rechercher les email uniques avec Distinct
- Une fois la liste dans le RecordSet, requestionner la DB pour demander le NomPrenom associé à chaque email.
Tu peux aussi continuer à ne faire qu'une seule requète en supprimant le Distinct et faire la recherche de doublon ensuite en supprimant les Record dont le champ email existe déjà dans le RecordSet (avec monRecordSet.Delete).
Quoique, en y reflechissant, on peut le faire en une seule requète complexe :
"Select m1.email, m1.NomPrenon " & _
" From Membre m1 " & _
" Where m1email in (Select Distinct m2.email " & _
" from Membre m2 " & _
" where m2.echeance > #" & MaDate & "#) " & _
" Order By m1.NomPrenon"
Essaye, tu verras bien
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accro