Bonjour.
Je suis praticien en massages-bien-être, et je suis en train de mettre au point un outil de gestion de mes clients.
Dans les diverses fonctions prévues, je développe une requête qui me permet de classer mes clients par date d'anniversaire à venir.
Cette table, intitulée CIVILITE contient une trentaine de champs, dont notamment :
Dans l'élaboration de ma requête, j'ai rencontré à un problème d'Utilisation incorrecte de Null. Suite à celui-ci, j'ai créé une première requête nommée "PréClassement par anniversaire (N)" qui ne conserve que les dates de naissances renseignées :
- CIVILITE_Ref
- CIVILITE_Date_Naissance
- CIVILITE_Prenom
- CIVILITE_Nom
Basée sur celle-ci, j'ai créé une autre requête nommée "Classement par anniversaire (N)" :
- CIVILITE_Ref
- CIVILITE_Date_Naissance - Critère : Est Pas Null
- CIVILITE_Prenom
- CIVILITE_Nom
Pour les fans de SQL :
- Anniversaire: CDate(CChaîne(PartDate("d";[CIVILITE_Date_Naissance])) & "/" & CChaîne(PartDate("m";[CIVILITE_Date_Naissance])) & "/" & CChaîne(PartDate("yyyy";Maintenant()))) - Tri : Croissant - Format : "jj mmm aaaa"
- CIVILITE_Date_Naissance
- CIVILITE_Prenom
- CIVILITE_Nom
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3SELECT CDate(CStr(DatePart("d",[CIVILITE_Date_Naissance])) & "/" & CStr(DatePart("m",[CIVILITE_Date_Naissance])) & "/" & CStr(DatePart("yyyy",Now()))) AS Anniversaire, [PréClassement par anniversaire (N)].CIVILITE_Date_Naissance, [PréClassement par anniversaire (N)].CIVILITE_Prenom, [PréClassement par anniversaire (N)].CIVILITE_Nom FROM [PréClassement par anniversaire (N)] ORDER BY CDate(CStr(DatePart("d",[CIVILITE_Date_Naissance])) & "/" & CStr(DatePart("m",[CIVILITE_Date_Naissance])) & "/" & CStr(DatePart("yyyy",Now())));
Notez bien : la formule génère une date composée du jour et du mois de naissance du client et de l'année en cours (par exemple, pour une personne née le 29/12/69, la formule génère 29/12/2009).
Jusque là tout va bien, ça fonctionne nickel.
Le problème survient lorsuqu'au champ Anniversaire j'ajoute la condition >Maintenant() de manière à n'obtenir que les anniversaires à venir dans l'année en cours. Lorsque j'exécute la requête, j'obtiens l'erreur "Utilisation incorrecte de Null".
En SQL :
Evidemment, avant de poster, j'ai pris soin de vérifier qu'il n'existait aucun champ Null. J'ai même tenté d'utiliser Nz(), mais rien n'y fait.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4SELECT CDate(CStr(DatePart("d",[CIVILITE_Date_Naissance])) & "/" & CStr(DatePart("m",[CIVILITE_Date_Naissance])) & "/" & CStr(DatePart("yyyy",Now()))) AS Anniversaire, [PréClassement par anniversaire (N)].CIVILITE_Date_Naissance, [PréClassement par anniversaire (N)].CIVILITE_Prenom, [PréClassement par anniversaire (N)].CIVILITE_Nom FROM [PréClassement par anniversaire (N)] WHERE (((CDate(CStr(DatePart("d",[CIVILITE_Date_Naissance])) & "/" & CStr(DatePart("m",[CIVILITE_Date_Naissance])) & "/" & CStr(DatePart("yyyy",Now()))))>Now())) ORDER BY CDate(CStr(DatePart("d",[CIVILITE_Date_Naissance])) & "/" & CStr(DatePart("m",[CIVILITE_Date_Naissance])) & "/" & CStr(DatePart("yyyy",Now())));
![]()
Si quelqu'un a ne serait-ce qu'une idée, une piste de solution, je le remercie par avance de m'orienter !
Dans l'attente, bien cordialement,
Eric.










Répondre avec citation









Partager