Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Des dates maudites qui font planter Dlookup

2 réponses
Avatar
Kolele
Bonsoir à toutes et à tous,
J'ai un souci avec une requête union que db m'avait aidé à monter, pour une
application calculant des frais de transport de profs visitant leurs élèves
en stage en entreprise.
A partir de 4 éléments (un identifiantProf, une date de visite, un ordre
des visites et la commune de l'entreprise), la requête union détermine les
trajets. Ex : le prof visite le 6 mars un élève à Créteil, puis un autre à
Orly. La requête génère trois trajets : Thiais (le lycée=départ du
prof)/Créteil, puis Créteil/Orly, et enfin le retour Orly/Thiais.
Ça fonctionnait bien dans les premiers tests et là ça bogue sans raison sur
les multi trajets: la requête laisse vide la commune de départ de la deuxième
visite. Et pareil pour toutes les visites intermédiaires s'il y en a plus de
2. En revanche, la requête union me renvoie toujours le chemin du retour vers
le lycée
Le truc qui me rend fou, c'est que le bug se produit seulement sur certaines
dates !!! Il suffit de changer de date pour que ça marche. Les 12 de chaque
mois sont maudits, du 13 au 30 avril pas de problème. Deux que je cherche la
cohérence dans les anomalies, JE N'EN DORS PLUS ! A l'aide.
Ci-joint le SQL :
SELECT [CléPersonnel], [DateVisiteProf], [OrdreTrajet],
IIf([OrdreTrajet]=1, "THIAIS",
DLookUp("[NomCommune]","[11-PlannificationVisiteSousForm]","[CléPersonnel]="
& [CléPersonnel] & " and [DateVisiteProf]=#" & [DateVisiteProf] & "# and
[OrdreTrajet]=" & [OrdreTrajet]
-1)) AS CommuneDépart, [NomCommune] AS CommuneArrivée FROM
[11-PlannificationVisiteSousForm]

UNION SELECT [CléPersonnel], [DateVisiteProf], [OrdreTrajet]+1,
[NomCommune], "THIAIS"
FROM [11-PlannificationVisiteSousForm]D1
WHERE [OrdreTrajet]=(select max([OrdreTrajet]) from
[11-PlannificationVisiteSousForm]D2 WHERE D2.[CléPersonnel]=D1.[CléPersonnel]
and D2.[DateVisiteProf]=D1.[DateVisiteProf]);
--
Pierre.

2 réponses

Avatar
db
Kolele a écrit :
Bonsoir à toutes et à tous,


...

Le truc qui me rend fou, c'est que le bug se produit seulement sur certaines
dates !!! Il suffit de changer de date pour que ça marche. Les 12 de chaque
mois sont maudits, du 13 au 30 avril pas de problème. Deux que je cherche la
cohérence dans les anomalies, JE N'EN DORS PLUS ! A l'aide.



Bonsoir,

Bon, on va essayer de vous faire retrouver le sommeil :-)
Le format normal pour les dates en SQL, c'est le format américain :
mois/jour/année. De ce fait, toutes les dates avant le 12 du mois sont
mal interprétées : 06/02/2010, c'est le 2 juin 2010 et non le 6 février.
Et toutes les dates après le 12 devraient provoquer une erreur. Sauf
qu'Access, dans sa grande mansuétude (?), constatant (?) que le format
n'était pas respecté, remet la date dans le bon ordre : 13/02/2010 ->
02/13/2010, et on n'y voit que du feu.

La solution, formater la date :

... & [CléPersonnel] & " and [DateVisiteProf]=#" &
format([DateVisiteProf],"mm/dd/yyyy") & "# and ...

db
Avatar
Kolele
ça marche !!
J'ai testé la base dans tous les sens avant de repérer l'histoire de la date.
Merci beaucoup !

--
Pierre.


"db" a écrit :
Bonsoir,

Bon, on va essayer de vous faire retrouver le sommeil :-)
Le format normal pour les dates en SQL, c'est le format américain :
mois/jour/année. De ce fait, toutes les dates avant le 12 du mois sont
mal interprétées : 06/02/2010, c'est le 2 juin 2010 et non le 6 février.
Et toutes les dates après le 12 devraient provoquer une erreur. Sauf
qu'Access, dans sa grande mansuétude (?), constatant (?) que le format
n'était pas respecté, remet la date dans le bon ordre : 13/02/2010 ->
02/13/2010, et on n'y voit que du feu.

La solution, formater la date :

.... & [CléPersonnel] & " and [DateVisiteProf]=#" &
format([DateVisiteProf],"mm/dd/yyyy") & "# and ...

db
.