OVH Cloud OVH Cloud

comparer les heures ...

13 réponses
Avatar
Fred Pasc
Bonjour,

Je dois, pour associer un type d'équipe (matin, aprem, nuit) à un de mes
utilisateurs comparer l'heure de la connexion (enregistré dans une table)
aux heures définissant s'il s'agit du matin, de l'aprem ou de la nuit.
Par exemple matin est défini de 5h à 12h30, l'aprem de 12h30 à 20h et la
nuit de 20h à 4h.
Mon problème est que je ne sais pas récupérer et donc pas récupérer l'heure
et je vois encore moins comment je vais pouvoir comparer 12h31 à 12h29. Je
pense aussi au problème de changement de jour pendant l'équipe de nuit, je
sais pas si cela va poser un problème.
Enfin voilà, je souhaiterais faire ma comparaison dans une requête sous
Access 2000 de préférence mais l'emploi de VBA est obligatoire je m'y
mettrai.
Merci de votre aide et/ou de votre éclairage.

A+
Fred

3 réponses

1 2
Avatar
Gafish
Il ne faut pas que tu y mettes direct dans le code SQL, mais il faut que le
mettes dans le mode création de ta requête.
Tu as deux parties, la partie haute ou tu trouves les tables, et la partie
basse avec des lignes et des colonnes ou une colonne correspond à un champ


H: Heure([HCOMPLETE])


Il s'agit d'un premier champ aliasé H qui prend l'heure de HComplete

M: Minute([HCOMPLETE])


Deuxième champs aliasé M qui prend lesm inutes

VraiFaux(CDate([H] & ":" & [M]) Entre #04:00:00# Et
#12:30:00#;"Good";"Bad")


Et un exemple de condition, que tu mettras dans un troisième champs que tu
aliaseras comme tu le souhaites


Dans une requête? Tel quel? Je ne suis pas un pro du SQL mais ça ne
me le prend pas et je trouve ça normal, les ":" , les ";", le
"VraiFaux" il ne semble pas connaître non plus.


Vi c'est normal ce n'est pas du SQL mais Access va ensuite le traduire dans
sa norme SQL (où tu trouveras aussi quelques différences suivant de quel
sgbd tu viens).



--
Charte du forum : http://users.skynet.be/mpfa/
Recherche dans les archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
Bonjour Fred,

J'avais cru comprendre que tu voulais, en fonction de l'heure de
connexion d'un salarié, savoir s'il appartenait à l'équipe du matin, de
l'après-midi ou du soir.

Que veux-tu faire exactement. Quelles sont les tables (et leur
structure) qui entrent en jeu?

Je te donne un petit exemple trivial, juste pour voir comment composer
et trouver à quelle équipe appartient le salarié puis mettre à jour le
champ Equipe.

Soit 2 tables : Connexion et Salarie
Connexion(NumeroCnx (PK), NumeroSalarie (FK), HCOMPLETE),HCOMPLETE est
au format Date/Heure, Date,général c a d du type 19/05/2005 11:25:45
Salarie(NumeroSalarie (PK), Nom, Equipe)

La requête suivante met à jour le champ Equipe de la table Salarie en
tenant compte de tes plages horaires définies dans le 1er post.

Dans la fenêtre SQL de la requête :

UPDATE Connexion INNER JOIN Salarie ON Connexion.NumeroSalarie =
Salarie.NumeroSalarie SET Salarie.Equipe = IIf(CDate(Hour([HCOMPLETE]) &
":" & Minute([HCOMPLETE])) Between #12/30/1899 5:0:0# And #12/30/1899
12:29:59#,"Matin",IIf(CDate(Hour([HCOMPLETE]) & ":" &
Minute([HCOMPLETE])) Between #12/30/1899 12:30:0# And #12/30/1899
19:59:59#,"Apres midi",IIf(CDate(Hour([HCOMPLETE])) & ":" &
Minute([HCOMPLETE]) Between #12/30/1899 20:0:0# And #12/30/1899
23:59:59# Or CDate(Hour([HCOMPLETE]) & ":" & Minute([HCOMPLETE]))
Between #12/30/1899# And #12/30/1899 4:0:0#,"Nuit","RIEN")));

Dans le concepteur de requête : Requête Mise à jour
Les 2 tables Connexion & Salarie

Le champ Equipe et sur la ligne Mise à jour:
VraiFaux(CDate(Heure([HCOMPLETE]) & ":" & Minute([HCOMPLETE])) Entre
#05:00:00# Et #12:29:59#;"Matin";VraiFaux(CDate(Heure([HCOMPLETE]) & ":"
& Minute([HCOMPLETE])) Entre #12:30:00# Et #19:59:59#;"Apres
midi";VraiFaux(CDate(Heure([HCOMPLETE])) & ":" & Minute([HCOMPLETE])
Entre #20:00:00# Et #23:59:59# Ou CDate(Heure([HCOMPLETE]) & ":" &
Minute([HCOMPLETE])) Entre #00:00:00# Et #04:00:00#;"Nuit";"RIEN")))




--
A+
Eric
Un petit tour ici : http://users.skynet.be/mpfa/
Accès aux archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Fred Pasc
Merci à tous les deux,

J'essaye ton code Eric et la synthaxe est correcte. Au moment de
l'exécution, il me signale une erreur de compilation que je ne comprends pas
car il me retourne tout le code (à partir du premier IIF). Du coup, je ne
vois pas où est mon erreur.
Je continue à chercher ...
Si jamais vous avez une idée ...
Sinon ben ... je vais chercher
Merci
A+
Fred

"Eric" a écrit dans le message de news:

Bonjour Fred,

J'avais cru comprendre que tu voulais, en fonction de l'heure de
connexion d'un salarié, savoir s'il appartenait à l'équipe du matin, de
l'après-midi ou du soir.

Que veux-tu faire exactement. Quelles sont les tables (et leur
structure) qui entrent en jeu?

Je te donne un petit exemple trivial, juste pour voir comment composer
et trouver à quelle équipe appartient le salarié puis mettre à jour le
champ Equipe.

Soit 2 tables : Connexion et Salarie
Connexion(NumeroCnx (PK), NumeroSalarie (FK), HCOMPLETE),HCOMPLETE est
au format Date/Heure, Date,général c a d du type 19/05/2005 11:25:45
Salarie(NumeroSalarie (PK), Nom, Equipe)

La requête suivante met à jour le champ Equipe de la table Salarie en
tenant compte de tes plages horaires définies dans le 1er post.

Dans la fenêtre SQL de la requête :

UPDATE Connexion INNER JOIN Salarie ON Connexion.NumeroSalarie > Salarie.NumeroSalarie SET Salarie.Equipe = IIf(CDate(Hour([HCOMPLETE]) &
":" & Minute([HCOMPLETE])) Between #12/30/1899 5:0:0# And #12/30/1899
12:29:59#,"Matin",IIf(CDate(Hour([HCOMPLETE]) & ":" &
Minute([HCOMPLETE])) Between #12/30/1899 12:30:0# And #12/30/1899
19:59:59#,"Apres midi",IIf(CDate(Hour([HCOMPLETE])) & ":" &
Minute([HCOMPLETE]) Between #12/30/1899 20:0:0# And #12/30/1899
23:59:59# Or CDate(Hour([HCOMPLETE]) & ":" & Minute([HCOMPLETE]))
Between #12/30/1899# And #12/30/1899 4:0:0#,"Nuit","RIEN")));

Dans le concepteur de requête : Requête Mise à jour
Les 2 tables Connexion & Salarie

Le champ Equipe et sur la ligne Mise à jour:
VraiFaux(CDate(Heure([HCOMPLETE]) & ":" & Minute([HCOMPLETE])) Entre
#05:00:00# Et #12:29:59#;"Matin";VraiFaux(CDate(Heure([HCOMPLETE]) & ":"
& Minute([HCOMPLETE])) Entre #12:30:00# Et #19:59:59#;"Apres
midi";VraiFaux(CDate(Heure([HCOMPLETE])) & ":" & Minute([HCOMPLETE])
Entre #20:00:00# Et #23:59:59# Ou CDate(Heure([HCOMPLETE]) & ":" &
Minute([HCOMPLETE])) Entre #00:00:00# Et #04:00:00#;"Nuit";"RIEN")))




--
A+
Eric
Un petit tour ici : http://users.skynet.be/mpfa/
Accès aux archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr


1 2