Bonjour tout le monde
Dans une table TABLE, j’ai un champ CODE et un champ DATE qui constituent à eux deux la clé primaire de cette table. J’aimerais renseigner deux champs DATE SUIVANTE et DATE PRECEDENTE
Pour DATE SUIVANTE (par exemple), j’utilise cette syntaxe dans ma requête Update :
Et ça marche : OUF ! mais ça prend un temps ouf (aussi). La table ne fait que 21 000 enregistrements (avec 132 CODE(s) différents).CDate(VraiFaux(MinDom("[Date]";"TABLE";"[Date]>#" & CDate(Format([date];"mm/jj/aaaa")) & "# and [CODE]='" & [CODE] & "'") Est Null;Date();MinDom("[Date]";"TABLE";"[Date]>#" & CDate(Format([date];"mm/jj/aaaa")) & "# and [CODE]='" & [CODE] & "'")))
Existe-t-il un moyen de la simplifier, sachant que :
- Lorsque je suis à la DATE maximale pour mon CODE, je mets la date d’aujourd’hui (d’où le VraiFaux) et la nécessité ( ?) de calculer deux fois mon MinDom.
- Les données dans DATE sont considérées JJ/MM/AAAA après le 12 de chaque mois et MM/JJ/AAAA avant le 12. Exemple : 12/08/2011 = 8 décembre 2011. D’où le cdate(format(DATE)…))
L’avantage de l’utilisation de MinDom (ou MaxDom pour DATE PRECEDENTE), c’est que je n’avais besoin que d’une seule requête mise à jour. Mais à elle seule elle prend plus de temps que deux créations de tables avec des requêtes regroupement et une mise à jour de TABLE avec les deux nouvelles tables créées et dans ce cas, pas de problème de format de dates.
L’autre solution que je n’arrive pas à appliquer serait sans doute une sous-requête, mais je n’arrive pas à la créer et faire le lien avec TABLE. Si c’est plus rapide, j’apprécierais votre aide pour sa syntaxe.
Merci beaucoup (encore et encore).
JPG
Partager