|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Futur Membre du Club
![]() Jean Pierre Inscription : mars 2009 Messages : 63 ![]() |
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 : Citation:
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 |
|
|
|
00
|
|
|
#2 |
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 206 ![]() |
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Jean Pierre Inscription : mars 2009 Messages : 63 ![]() |
Merci pour ta réponse.
Je n'arrive pas à comprendre comment faire mon lien entre CODE de T1 et CODE de T2. |
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 178 ![]() |
Bonjour Jpg75014 et User,
Eh bien, tout est dans le lien indiqué pas User. Sauf que si tu n'arrives Citation:
A noter que, les fonctions MinDom() et MaxDom() sont, en final, des requêtes, donc des sous-requêtes, dans ton cas. Une chose que je ne comprends pas : Citation:
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
||
|
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Jean Pierre Inscription : mars 2009 Messages : 63 ![]() |
Bonjour Richard,
Merci pour ta réponse. Je vais essayer la clause Where. En ce qui concerne le format des dates, je n'ai aucun problème lorsqu'il s'agit de les classer et même de faire du SQL avec Min ou Max de Date. Lorsque j'utilise cette date dans mes fonctions Dmax ou Dmin le résultat les considère comme jj/mm/aaaa lorsqu'il n'en est pas possible autrement : 14/09/2011 est forcément le 14 septembre 2011 (et non pas le 9è jour d'un 14ème mois) et mm/jj/aaaa lorsqu'il est possible d'inverser les jours et les mois 12/09/2011 devient le 9è jour du 12è mois --> 9 décembre 2011 Ce qui d'ailleurs ma mis la puce à l'oreille car cette date est supérieure à celle d'aujourd'hui par contre le résultat attendu me donne bien une date en bon format suivant ou précédant le 9 décémbre. Merci encore ! |
|
|
00
|
|
|
#6 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 178 ![]() |
J'entends bien, mais tu ne réponds pas vraiment à la question
Citation:
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
|
|
#7 | ||
|
Futur Membre du Club
![]() Jean Pierre Inscription : mars 2009 Messages : 63 ![]() |
Oui parce qu'il ne s'agit que d'un seul champ.
Dans ma table TABLE, j'ai un champ DT (avec comme valeurs les 12-14-15 septembre et le 10/12/2011). Avec Dmin, je souhaite obtenir pour le 12/09 la plus petite des dates supérieures. Dans mon cas, le 14/09/2011 donc. Lorsque je n'utilise pas le format mm/jj/aaaa (DT2), le résultat donne 10/12/2011 puisqu'il considère DT comme étant le 09/12/2011. Le résultat pour le 10/12/2011 n'est pas bon non plus (il devrait être Null car strictement >, mais dans ce cas la DT comparée est le 12 octobre). Lorque je l'utilise (DT3) j'obtiens bien le 14/09/2011 et Null pour le 10/12/2011. Dans DT1, je fais juste un calcul de DT+1 et j'obtiens bien 13/09/2011. Le format est donc bon ? ----DT---- ----DT1---- ----DT2---- ----DT3---- 12/09/2011 13/09/2011 10/12/2011 14/09/2011 14/09/2011 15/09/2011 15/09/2011 15/09/2011 15/09/2011 16/09/2011 10/12/2011 10/12/2011 10/12/2011 11/12/2011 10/12/2011 Mon SQL : Code :
|
||
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 178 ![]() |
Ce que je veux dire, c'est que tu ne devrais pas avoir besoin de faire tout ce mic-mac...
Dans le SELECT : Code sql :
DT_Précédente : (SELECT top 1 x.DT FROM TABLE x WHERE x.DT< [TABLE].[DT] ORDER BY x.DT DESC) Code sql :
DT_Suivante : (SELECT top 1 x.DT FROM TABLE x WHERE x.DT> [TABLE].[DT] ORDER BY x.DT)
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#9 |
|
Futur Membre du Club
![]() Jean Pierre Inscription : mars 2009 Messages : 63 ![]() |
ça marche merci beaucoup. J'ai juste ajouté quelques crochets et un AS.
Merci, merci et ... Résolu !
|
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 178 ![]() |
Ah oui, je t'ai précisé dans le SELECT, mais, effectivement, il s'agissait du SELECT via l'assistant (":" => as, par exemple).
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() ![]() Inscription : avril 2006 Messages : 1 318 ![]() |
j'ai peut être loupé un épisode mais je ne suis pas certain que les deux requêtes proposées soient pérennes
car la clef primaire de la table est composée...Philippe |
|
00
|
|
|
#12 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 178 ![]() |
Bonjour Philben,
Merci pour ta remarque judicieuse. Tu as raison, j'ai oublié un test dans la clause WHERE, test que Jpg75014 n'aura pas manqué d'ajouter, je suppose. En même temps que le VraiFaux() qui teste l'absence de date précédente/suivante. Je me suis intéressé au principe de résolution, et non au détail... mea culpa. A bientôt.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() ![]() Inscription : avril 2006 Messages : 1 318 ![]() |
|
|
00
|
|
|
#14 |
|
Futur Membre du Club
![]() Jean Pierre Inscription : mars 2009 Messages : 63 ![]() |
Bonjour,
Me revoila après un long week-end. J'ai en effet ajouté le lien avec mon "CODE" dans la clause WHERE et ai testé la valeur NULL. Merci pour vos remarques. P'tite question tout de même. Mon utilisateur doit saisir ce CODE pour le lancement d'une requête. Donc la double clé primaire de ma table CODE/DATE ne me sert plus vraiment. C'est seulement la DATE qui devient unique. Pensez-vous que je puisse, pour gagner du temps, insérer dans le champ de ma requête, le critère de CODE (Comme"*" & MonFORM.CODE & "*") dans la sous-requête ? Ou Access fera tout de même le calcul sur toute la table. Mes tests n'ont pas été flagrants de réusssite et je ne sais pas si c'est ma syntaxe SQL qui est limite ou le critère CODE qui n'est pas pris en compte avant le calcul du champ DATE PRECEDENTE. Merci encore. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com