[Requete] SQL dans une requète ?

Résolu/Fermé
progra Messages postés 122 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 17 octobre 2013 - 19 juin 2013 à 08:46
progra Messages postés 122 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 17 octobre 2013 - 19 juin 2013 à 11:43
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

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
0
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!!!
0
progra Messages postés 122 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 17 octobre 2013 50
19 juin 2013 à 10:21
J'ai fait ce que tu m'as dit, j'ai tout modifié. Il passe désormais par trois requètes. Mais lorsque je fait le 'IF" Il me donne un mettre d'erreur :

" Fonction "IF" non définie dans l'expression "
0
Oui ! faute d'orthographe la fonction est iif( , , ) avec 2 fois " I "
Je m'en suis rendu compte après et je croyais que tu ferais la correction
0
Mais pourquoi 3 requêtes, il suffirait d'intercaler des champs intermédiaires. Avec la forme "Création" ou "Visuelle" de Access cela se fait très bien. Directement en SQL je ne saurai pas dire.
0
progra Messages postés 122 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 17 octobre 2013 50
19 juin 2013 à 11:21
2 I ... Ah d'accord ... (désolé je ne connaissais pas)
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
19 juin 2013 à 10:21
Hello,
Tu devrais chercher du côté des case/when :)

Bon courage
0
progra Messages postés 122 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 17 octobre 2013 50
19 juin 2013 à 10:31
Case When n'existe pas en Access 2007 à ce que j'ai vu ...
0
Case / when ?????
J'ignore! Peut être en Excel?
0