Utilisation incorrecte de Null
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 :
- CIVILITE_Ref
- CIVILITE_Date_Naissance
- CIVILITE_Prenom
- CIVILITE_Nom
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 - Critère : Est Pas Null
- CIVILITE_Prenom
- CIVILITE_Nom
Basée sur celle-ci, j'ai créé une autre requête nommée "Classement par anniversaire (N)" :
- 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
Pour les fans de SQL :
Code:
1 2 3
| SELECT 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. :D:ccool:
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". :furax:
En SQL :
Code:
1 2 3 4
| SELECT 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()))); |
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.
:arf: :help:
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.