L'équivalent de RechercheV en Access est DFirst() (TrouverPremier en français il me semble).
DFirst("nomChampALire"; "NomTaTable"; "Ici ta condition de recherche")
La partie délicate va être la condition de recherche, dans ton cas il faurdait sans doute utiliser DMax() (TrouverMax en français ?) au lieu de DFirst(), car tu cherches l'enregistrement dont la date est la plus proche d'une date donnée donc celle dont la date maximum est strictement inférieure ou égale à la date donnée. (Oui ce n'est pas intuitif au premier regard).
Ça devrait être un truc du genre :
DMax("nomChampALire"; "NomTaTable"; "[TonChampDate]<=#" & format([NomTaDate];"aaaa\-mm\-jj") & "#")
Les # servent de délimteur de date.
Le format s'assure que la date soit bien comprise en s'assurant que par exemple le 01/02/2013 soit bien compris comme le 1er Février 2013 (format français : jj/mm/aaaa) et non le 2 Janvier 2013 (format américain : mm/jj/aaaa).
Il faudra peut-être utiliser "yyyy\-mm\-dd" au lieu de "aaaa\-mm\-jj" dans format().
DMax n'est pas la fonction la plus rapide et si tu as beaucoup de données cela peut paraître.
Une autre solution serait de faire
- une requête de regroupement (que j'appellerai RMax) qui te donne la date maximum dans la table "jointe" (que j'appellerai T2) dont la date est inférieure ou égale à la date voulue.
- la puis de faire une requuête en jointure entre T2 et RMAX afin d'avoir les données de T2 à la date Max (que j'applerai RT2Max) sur la date.
- et enfin de faire une jointure entre T1 et RT2Max sur le code client ou tout autre élément pertinent SAUF la date.
Donc au total 3 requêtes.
A+
Partager