[Requete] SQL dans une requète ?
Résolu
progra
Messages postés
143
Statut
Membre
-
progra Messages postés 143 Statut Membre -
progra Messages postés 143 Statut Membre -
Bonjour,
Je suis en stage dans une entreprise. On me demande, à partir d'une base de données access, de faire une autre base de données access ayant déjà des tables que j'ai passé en requêtes à partir de des tables que j'ai ramené de l'autre base de données.
Mais il y a une donnée que je ne sais pas comment avoir.
Explication : J'ai deux champs sous la forme : hhmmss. Un champ montrant le début de l'action de l'employé (WHPRTM) et la seconde montrant la fin de l'action (WHPCTM).
La requête est faite.
Mon problème : Il y a des actions qui vont commencer à : 20h37m28s (par exemple) et finir à 6h24m39s (sur deux équipes différentes bien sûr, l'une fini à 21h et l'autre commence à 5h du matin.). Mon résultat : Un nombre négatif.
Voici ma requête pour le moment :
SELECT dbo_DMPICKHR.*, Int(([WHPCTM]-[WHPRTM])/10000*60) AS DURMIN2
FROM dbo_DMPICKHR;
(Ne faites pas attention aux termes utilisés qui peuvent vous sembler bizarre.)
Peut-on rajouter, sur Access, une code SQL étant, par exemple :
If DURMIN2 < 0 Then
DURMIN2 = (24*3600) + DURMIN2
End If.
Si je peux le faire, comment le faire ? Je ne l'ai pas appris et je ne trouve rien sur internet ... Merci beaucoup.
(S'il y a une autre solution, merci de l'aide.)
J'espère avoir bien détaillé.
Cordialement,
progra
Je suis en stage dans une entreprise. On me demande, à partir d'une base de données access, de faire une autre base de données access ayant déjà des tables que j'ai passé en requêtes à partir de des tables que j'ai ramené de l'autre base de données.
Mais il y a une donnée que je ne sais pas comment avoir.
Explication : J'ai deux champs sous la forme : hhmmss. Un champ montrant le début de l'action de l'employé (WHPRTM) et la seconde montrant la fin de l'action (WHPCTM).
La requête est faite.
Mon problème : Il y a des actions qui vont commencer à : 20h37m28s (par exemple) et finir à 6h24m39s (sur deux équipes différentes bien sûr, l'une fini à 21h et l'autre commence à 5h du matin.). Mon résultat : Un nombre négatif.
Voici ma requête pour le moment :
SELECT dbo_DMPICKHR.*, Int(([WHPCTM]-[WHPRTM])/10000*60) AS DURMIN2
FROM dbo_DMPICKHR;
(Ne faites pas attention aux termes utilisés qui peuvent vous sembler bizarre.)
Peut-on rajouter, sur Access, une code SQL étant, par exemple :
If DURMIN2 < 0 Then
DURMIN2 = (24*3600) + DURMIN2
End If.
Si je peux le faire, comment le faire ? Je ne l'ai pas appris et je ne trouve rien sur internet ... Merci beaucoup.
(S'il y a une autre solution, merci de l'aide.)
J'espère avoir bien détaillé.
Cordialement,
progra
2 réponses
-
Bonjour,
Une solution serait d'introduire dans ta formule le calcul des heures sous la forme
If( HeureFin < HeureDebut ; ((24:00:00 - HeureDebut) + HeureFin) ; HeureFin - HeureDebut )
Je crois qu'il existe une autre possibilité par les modulos, mais celle-ci me parait plus facile à décrypter.
Bonne suite-
Soit dans un champ calculé intermédiaire, soit au milieu de ta formule finale
Int(([WHPCTM]-[WHPRTM])/10000*60)
Le terme à remplacer est [WHPCTM]-[WHPRTM])
Mais si les heures sont en format numérique, c'est encore plus simple parce que Access compte les dates et les heures en continu, et alors le problème ne se pose plus!!! -
-
-
-
-
-
Hello,
Tu devrais chercher du côté des case/when :)
Bon courage