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

Sous totaux chronologiques

15 réponses
Avatar
Didou
Bonjour,
Je fais le suivi de l'activité de machines (toutes les secondes) qui ont
différents états de fonctionnement dans le temps (1, 2 ou 3). Je voudrais
dans une requête reconstituer la chronologie des différents états de
fonctionnement (exemple Enregistrement 1 9h00 – 9h03 – Etat 1 ;
Enregistrement 2 9h04 – 9 h07 Etat 2 ; Enregistrement 3 9h08 – 9 h11 Etat 1).

Le problème est que ma requête globalise les deux états 1, je ne sais pas
comment séparer ces deux périodes de fonctionnement.

Merci d'avance

5 réponses

1 2
Avatar
Didou
Bonjour,

J'ai fait de nouveaux tests : quand je passe de l'état 1 à l'état 2, cela
fonctionne (le 1 a une fin et le 2 à un début) par contre, quand je passe de
l'état 2 à l'état 1, je ne vois ni le fin de l'état 2 ni le début de l'état 1.

Merci encore

Voici le code que j'ai utilisé pour cette première requête.

SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Fin" AS Ch
FROM LaTable AS T
ORDER BY T.[ID_Donnée] DESC
UNION
SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Début"
FROM LaTable AS T
ORDER BY T.[ID_Donnée]
UNION
SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Début"
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON (T1.[ID_Machine]=T2.[ID_Machine]
And DateDiff("s",T1.HeureEnr,T2.HeureEnr)=-1)
WHERE (T1.Etat-T2.Etat<>0)
UNION SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Fin"
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON (T1.[ID_Machine]=T2.[ID_Machine]
And DateDiff("s",T1.HeureEnr,T2.HeureEnr)=1)
WHERE (T1.Etat-T2.Etat<>0);


"Michel__D" a écrit :

Bonjour,

Donne le SQL que tu as utilisé.

Didou a écrit :
> Bonjour Michel_D
>
> Bonjour
>
> Grand merci pour votre temps, je découvre (avec surprise mais aussi avec
> plaisir !) votre réponse après quelques jours passés sur d'autres dossiers.
> Si je comprends bien, la première requête ListeDebutFin devrait donner le
> résultat suivant :
>
> ID_Donnée ID_Machine Etat HeureEnr Ch
> 1 4849 1 16:55:43 Début
> 4 4849 1 16:55:46 Fin
> 5 4849 2 16:55:47 Début
> 7 4849 2 16:55:49 Fin
> 8 4849 1 16:55:50 Début
> 10 4849 1 16:56:52 Fin
>
> Hors les lignes concernant l'ID_Donnée 7 et 8 n'apparaissent pas, n'étant
> pas utilisateur du langage SQL (une lacune qu'il va me falloir combler au
> plus vite !), je ne vois pas comment corriger le code.
>
> Merci encore.
>
> Didou
>
>
> "Michel__D" a écrit :
>
>> Michel__D a écrit :
>>> Bonjour,
>>>
>>> Didou a écrit :
>>>> Bonjour Jac (et à toute la communauté)
>>>>
>>>> Suite à ta demande voici un exemple (concentré !) de données.
>>>> ID_Donnée ID_Machine Heure Etat
>>>> 1 4849 16:55:43 1
>>>> 2 4849 16:55:44 1
>>>> 3 4849 16:55:45 1
>>>> 4 4849 16:55:46 1
>>>> 5 4849 16:55:47 2
>>>> 6 4849 16:55:48 2
>>>> 7 4849 16:55:49 2
>>>> 8 4849 16:56:50 1
>>>> 9 4849 16:56:51 1
>>>> 10 4849 16:56:52 1
>>> Donc voici ma proposition en 3 requêtes (à adapter) :
>>>
>>> La 1ère requete nommée "ListeDebutFin" :
>>>
>>> SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Fin" AS Ch
>>> FROM LaTable AS T
>>> ORDER BY T.[ID_Donnée] DESC
>>> UNION
>>> SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Début"
>>> FROM LaTable AS T
>>> ORDER BY T.[ID_Donnée]
>>> UNION
>>> SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Début"
>>> FROM LaTable AS T1 INNER JOIN LaTable AS T2
>>> ON (T1.[ID_Machine]=T2.[ID_Machine]
>>> And DateDiff("s",T1.HeureEnr,T2.HeureEnr)=-1)
>>> WHERE (T1.Etat-T2.Etat<>0)
>>> UNION
>>> SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Fin"
>>> FROM LaTable AS T1 INNER JOIN LaTable AS T2
>>> ON (T1.[ID_Machine]=T2.[ID_Machine]
>>> And DateDiff("s",T1.HeureEnr,T2.HeureEnr)=1)
>>> WHERE (T1.Etat-T2.Etat<>0);
>>>
>>> La 2ème requête nommée "NbDebutFin" :
>>>
>>> SELECT T1.ID_Machine, T1.HeureEnr, T1.Ch, Count(T2.HeureEnr) AS Nb
>>> FROM ListeDebutFin AS T1 INNER JOIN ListeDebutFin AS T2
>>> ON (T1.HeureEnr>=T2.HeureEnr) AND (T1.Ch=T2.Ch)
>>> AND (T1.ID_Machine=T2.ID_Machine)
>>> GROUP BY T1.ID_Machine, T1.HeureEnr, T1.Ch;
>>>
>>> Et la 3ème requête qui fournit le résultat demandé :
>>>
>>> TRANSFORM First(T1.HeureEnr) AS Ch1
>>> SELECT T1.ID_Machine, T1.Etat
>>> FROM ListeDebutFin AS T1 INNER JOIN NbDebutFin AS T2
>>> ON T1.HeureEnr=T2.HeureEnr
>>> GROUP BY T1.ID_Machine, T1.Etat, T2.Nb
>>> ORDER BY T1.ID_Machine, T2.Nb
>>> PIVOT T1.Ch;
>> Un oubli sur la 3ème requête :
>>
>> TRANSFORM First(T1.HeureEnr) AS Ch1
>> SELECT T1.ID_Machine, T1.Etat
>> FROM ListeDebutFin AS T1 INNER JOIN NbDebutFin AS T2
>> ON (T1.ID_Machine=T2.ID_Machine AND T1.HeureEnr=T2.HeureEnr)
>> GROUP BY T1.ID_Machine, T1.Etat, T2.Nb
>> ORDER BY T1.ID_Machine, T2.Nb
>> PIVOT T1.Ch;
>>



Avatar
Michel__D
Bonjour,

Esaye avec cette variante

SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Fin" AS Ch
FROM LaTable AS T
ORDER BY T.[ID_Donnée] DESC
UNION
SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Début"
FROM LaTable AS T
ORDER BY T.[ID_Donnée]
UNION
SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Début"
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON (T1.[ID_Machine]=T2.[ID_Machine]
WHERE (T1.Etat<>T2.Etat And T1.[ID_Donnée]-T2.[ID_Donnée]=1)
UNION
SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Fin"
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON (T1.[ID_Machine]=T2.[ID_Machine]
WHERE (T1.Etat<>T2.Etat And T1.[ID_Donnée]-T2.[ID_Donnée]=-1);


Didou a écrit :
Bonjour,

J'ai fait de nouveaux tests : quand je passe de l'état 1 à l'état 2, cela
fonctionne (le 1 a une fin et le 2 à un début) par contre, quand je passe de
l'état 2 à l'état 1, je ne vois ni le fin de l'état 2 ni le début de l'état 1.

Merci encore

Voici le code que j'ai utilisé pour cette première requête.

SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Fin" AS Ch
FROM LaTable AS T
ORDER BY T.[ID_Donnée] DESC
UNION
SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Début"
FROM LaTable AS T
ORDER BY T.[ID_Donnée]
UNION
SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Début"
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON (T1.[ID_Machine]=T2.[ID_Machine]
And DateDiff("s",T1.HeureEnr,T2.HeureEnr)=-1)
WHERE (T1.Etat-T2.Etat<>0)
UNION SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Fin"
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON (T1.[ID_Machine]=T2.[ID_Machine]
And DateDiff("s",T1.HeureEnr,T2.HeureEnr)=1)
WHERE (T1.Etat-T2.Etat<>0);


"Michel__D" a écrit :

Bonjour,

Donne le SQL que tu as utilisé.

Didou a écrit :
Bonjour Michel_D

Bonjour

Grand merci pour votre temps, je découvre (avec surprise mais aussi avec
plaisir !) votre réponse après quelques jours passés sur d'autres dossiers.
Si je comprends bien, la première requête ListeDebutFin devrait donner le
résultat suivant :

ID_Donnée ID_Machine Etat HeureEnr Ch
1 4849 1 16:55:43 Début
4 4849 1 16:55:46 Fin
5 4849 2 16:55:47 Début
7 4849 2 16:55:49 Fin
8 4849 1 16:55:50 Début
10 4849 1 16:56:52 Fin

Hors les lignes concernant l'ID_Donnée 7 et 8 n'apparaissent pas, n'étant
pas utilisateur du langage SQL (une lacune qu'il va me falloir combler au
plus vite !), je ne vois pas comment corriger le code.

Merci encore.

Didou


"Michel__D" a écrit :

Michel__D a écrit :
Bonjour,

Didou a écrit :
Bonjour Jac (et à toute la communauté)

Suite à ta demande voici un exemple (concentré !) de données.
ID_Donnée ID_Machine Heure Etat
1 4849 16:55:43 1
2 4849 16:55:44 1
3 4849 16:55:45 1
4 4849 16:55:46 1
5 4849 16:55:47 2
6 4849 16:55:48 2
7 4849 16:55:49 2
8 4849 16:56:50 1
9 4849 16:56:51 1
10 4849 16:56:52 1












Avatar
Didou
Bonjour,

Access ne prend pas cette nouvelle version : il me renvoie un message
d'erreur : erreur de syntaxe dans l'opération Join

Merci encore de ton temps

Ne te sens pas obligé de répondre, je comprendrais que tu ne souhaites pas
passer ton temps avec mes problèmes

Et merci encore

"Michel__D" a écrit :

Bonjour,

Esaye avec cette variante

SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Fin" AS Ch
FROM LaTable AS T
ORDER BY T.[ID_Donnée] DESC
UNION
SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Début"
FROM LaTable AS T
ORDER BY T.[ID_Donnée]
UNION
SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Début"
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON (T1.[ID_Machine]=T2.[ID_Machine]
WHERE (T1.Etat<>T2.Etat And T1.[ID_Donnée]-T2.[ID_Donnée]=1)
UNION
SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Fin"
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON (T1.[ID_Machine]=T2.[ID_Machine]
WHERE (T1.Etat<>T2.Etat And T1.[ID_Donnée]-T2.[ID_Donnée]=-1);


Didou a écrit :
> Bonjour,
>
> J'ai fait de nouveaux tests : quand je passe de l'état 1 à l'état 2, cela
> fonctionne (le 1 a une fin et le 2 à un début) par contre, quand je passe de
> l'état 2 à l'état 1, je ne vois ni le fin de l'état 2 ni le début de l'état 1.
>
> Merci encore
>
> Voici le code que j'ai utilisé pour cette première requête.
>
> SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Fin" AS Ch
> FROM LaTable AS T
> ORDER BY T.[ID_Donnée] DESC
> UNION
> SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Début"
> FROM LaTable AS T
> ORDER BY T.[ID_Donnée]
> UNION
> SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Début"
> FROM LaTable AS T1 INNER JOIN LaTable AS T2
> ON (T1.[ID_Machine]=T2.[ID_Machine]
> And DateDiff("s",T1.HeureEnr,T2.HeureEnr)=-1)
> WHERE (T1.Etat-T2.Etat<>0)
> UNION SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Fin"
> FROM LaTable AS T1 INNER JOIN LaTable AS T2
> ON (T1.[ID_Machine]=T2.[ID_Machine]
> And DateDiff("s",T1.HeureEnr,T2.HeureEnr)=1)
> WHERE (T1.Etat-T2.Etat<>0);
>
>
> "Michel__D" a écrit :
>
>> Bonjour,
>>
>> Donne le SQL que tu as utilisé.
>>
>> Didou a écrit :
>>> Bonjour Michel_D
>>>
>>> Bonjour
>>>
>>> Grand merci pour votre temps, je découvre (avec surprise mais aussi avec
>>> plaisir !) votre réponse après quelques jours passés sur d'autres dossiers.
>>> Si je comprends bien, la première requête ListeDebutFin devrait donner le
>>> résultat suivant :
>>>
>>> ID_Donnée ID_Machine Etat HeureEnr Ch
>>> 1 4849 1 16:55:43 Début
>>> 4 4849 1 16:55:46 Fin
>>> 5 4849 2 16:55:47 Début
>>> 7 4849 2 16:55:49 Fin
>>> 8 4849 1 16:55:50 Début
>>> 10 4849 1 16:56:52 Fin
>>>
>>> Hors les lignes concernant l'ID_Donnée 7 et 8 n'apparaissent pas, n'étant
>>> pas utilisateur du langage SQL (une lacune qu'il va me falloir combler au
>>> plus vite !), je ne vois pas comment corriger le code.
>>>
>>> Merci encore.
>>>
>>> Didou
>>>
>>>
>>> "Michel__D" a écrit :
>>>
>>>> Michel__D a écrit :
>>>>> Bonjour,
>>>>>
>>>>> Didou a écrit :
>>>>>> Bonjour Jac (et à toute la communauté)
>>>>>>
>>>>>> Suite à ta demande voici un exemple (concentré !) de données.
>>>>>> ID_Donnée ID_Machine Heure Etat
>>>>>> 1 4849 16:55:43 1
>>>>>> 2 4849 16:55:44 1
>>>>>> 3 4849 16:55:45 1
>>>>>> 4 4849 16:55:46 1
>>>>>> 5 4849 16:55:47 2
>>>>>> 6 4849 16:55:48 2
>>>>>> 7 4849 16:55:49 2
>>>>>> 8 4849 16:56:50 1
>>>>>> 9 4849 16:56:51 1
>>>>>> 10 4849 16:56:52 1



Avatar
Michel__D
re,

Autant pour moi, il y avait des parenthéses en trop.

SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Fin" AS Ch
FROM LaTable AS T
ORDER BY T.[ID_Donnée] DESC
UNION
SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Début"
FROM LaTable AS T
ORDER BY T.[ID_Donnée]
UNION
SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Début"
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON T1.[ID_Machine]=T2.[ID_Machine]
WHERE (T1.Etat<>T2.Etat And T1.[ID_Donnée]-T2.[ID_Donnée]=1)
UNION
SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Fin"
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON T1.[ID_Machine]=T2.[ID_Machine]
WHERE (T1.Etat<>T2.Etat And T1.[ID_Donnée]-T2.[ID_Donnée]=-1);

PS:Théoriquement les 2 requêtes devraient fonctionner et si celle-ci
ne fonctionne pas mieux, ce serait plus simple de fournir une copie
partielle de ta base pour voir ce qui coince.


Didou a écrit :
Bonjour,

Access ne prend pas cette nouvelle version : il me renvoie un message
d'erreur : erreur de syntaxe dans l'opération Join

Merci encore de ton temps

Ne te sens pas obligé de répondre, je comprendrais que tu ne souhaites pas
passer ton temps avec mes problèmes

Et merci encore

Didou a écrit :
Bonjour,

J'ai fait de nouveaux tests : quand je passe de l'état 1 à l'état 2, cela
fonctionne (le 1 a une fin et le 2 à un début) par contre, quand je passe de
l'état 2 à l'état 1, je ne vois ni le fin de l'état 2 ni le début de l'état 1.

Merci encore

Voici le code que j'ai utilisé pour cette première requête.

SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Fin" AS Ch
FROM LaTable AS T
ORDER BY T.[ID_Donnée] DESC
UNION
SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Début"
FROM LaTable AS T
ORDER BY T.[ID_Donnée]
UNION
SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Début"
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON (T1.[ID_Machine]=T2.[ID_Machine]
And DateDiff("s",T1.HeureEnr,T2.HeureEnr)=-1)
WHERE (T1.Etat-T2.Etat<>0)
UNION SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Fin"
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON (T1.[ID_Machine]=T2.[ID_Machine]
And DateDiff("s",T1.HeureEnr,T2.HeureEnr)=1)
WHERE (T1.Etat-T2.Etat<>0);


"Michel__D" a écrit :

Bonjour,

Donne le SQL que tu as utilisé.

Didou a écrit :
Bonjour Michel_D

Bonjour

Grand merci pour votre temps, je découvre (avec surprise mais aussi avec
plaisir !) votre réponse après quelques jours passés sur d'autres dossiers.
Si je comprends bien, la première requête ListeDebutFin devrait donner le
résultat suivant :

ID_Donnée ID_Machine Etat HeureEnr Ch
1 4849 1 16:55:43 Début
4 4849 1 16:55:46 Fin
5 4849 2 16:55:47 Début
7 4849 2 16:55:49 Fin
8 4849 1 16:55:50 Début
10 4849 1 16:56:52 Fin

Hors les lignes concernant l'ID_Donnée 7 et 8 n'apparaissent pas, n'étant
pas utilisateur du langage SQL (une lacune qu'il va me falloir combler au
plus vite !), je ne vois pas comment corriger le code.

Merci encore.

Didou


"Michel__D" a écrit :

Michel__D a écrit :
Bonjour,

Didou a écrit :
Bonjour Jac (et à toute la communauté)

Suite à ta demande voici un exemple (concentré !) de données.
ID_Donnée ID_Machine Heure Etat
1 4849 16:55:43 1
2 4849 16:55:44 1
3 4849 16:55:45 1
4 4849 16:55:46 1
5 4849 16:55:47 2
6 4849 16:55:48 2
7 4849 16:55:49 2
8 4849 16:56:50 1
9 4849 16:56:51 1
10 4849 16:56:52 1
















Avatar
Didou
Magnifique !

Un grand merci pour ton aide et un coup de chapeau à ta persévérance !!

Didou

"Michel__D" a écrit :

re,

Autant pour moi, il y avait des parenthéses en trop.

SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Fin" AS Ch
FROM LaTable AS T
ORDER BY T.[ID_Donnée] DESC
UNION
SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Début"
FROM LaTable AS T
ORDER BY T.[ID_Donnée]
UNION
SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Début"
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON T1.[ID_Machine]=T2.[ID_Machine]
WHERE (T1.Etat<>T2.Etat And T1.[ID_Donnée]-T2.[ID_Donnée]=1)
UNION
SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Fin"
FROM LaTable AS T1 INNER JOIN LaTable AS T2
ON T1.[ID_Machine]=T2.[ID_Machine]
WHERE (T1.Etat<>T2.Etat And T1.[ID_Donnée]-T2.[ID_Donnée]=-1);

PS:Théoriquement les 2 requêtes devraient fonctionner et si celle-ci
ne fonctionne pas mieux, ce serait plus simple de fournir une copie
partielle de ta base pour voir ce qui coince.


Didou a écrit :
> Bonjour,
>
> Access ne prend pas cette nouvelle version : il me renvoie un message
> d'erreur : erreur de syntaxe dans l'opération Join
>
> Merci encore de ton temps
>
> Ne te sens pas obligé de répondre, je comprendrais que tu ne souhaites pas
> passer ton temps avec mes problèmes
>
> Et merci encore
>
>> Didou a écrit :
>>> Bonjour,
>>>
>>> J'ai fait de nouveaux tests : quand je passe de l'état 1 à l'état 2, cela
>>> fonctionne (le 1 a une fin et le 2 à un début) par contre, quand je passe de
>>> l'état 2 à l'état 1, je ne vois ni le fin de l'état 2 ni le début de l'état 1.
>>>
>>> Merci encore
>>>
>>> Voici le code que j'ai utilisé pour cette première requête.
>>>
>>> SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Fin" AS Ch
>>> FROM LaTable AS T
>>> ORDER BY T.[ID_Donnée] DESC
>>> UNION
>>> SELECT TOP 1 T.[ID_Donnée], T.[ID_Machine], T.Etat, T.HeureEnr, "Début"
>>> FROM LaTable AS T
>>> ORDER BY T.[ID_Donnée]
>>> UNION
>>> SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Début"
>>> FROM LaTable AS T1 INNER JOIN LaTable AS T2
>>> ON (T1.[ID_Machine]=T2.[ID_Machine]
>>> And DateDiff("s",T1.HeureEnr,T2.HeureEnr)=-1)
>>> WHERE (T1.Etat-T2.Etat<>0)
>>> UNION SELECT T1.[ID_Donnée], T1.[ID_Machine], T1.Etat, T1.HeureEnr, "Fin"
>>> FROM LaTable AS T1 INNER JOIN LaTable AS T2
>>> ON (T1.[ID_Machine]=T2.[ID_Machine]
>>> And DateDiff("s",T1.HeureEnr,T2.HeureEnr)=1)
>>> WHERE (T1.Etat-T2.Etat<>0);
>>>
>>>
>>> "Michel__D" a écrit :
>>>
>>>> Bonjour,
>>>>
>>>> Donne le SQL que tu as utilisé.
>>>>
>>>> Didou a écrit :
>>>>> Bonjour Michel_D
>>>>>
>>>>> Bonjour
>>>>>
>>>>> Grand merci pour votre temps, je découvre (avec surprise mais aussi avec
>>>>> plaisir !) votre réponse après quelques jours passés sur d'autres dossiers.
>>>>> Si je comprends bien, la première requête ListeDebutFin devrait donner le
>>>>> résultat suivant :
>>>>>
>>>>> ID_Donnée ID_Machine Etat HeureEnr Ch
>>>>> 1 4849 1 16:55:43 Début
>>>>> 4 4849 1 16:55:46 Fin
>>>>> 5 4849 2 16:55:47 Début
>>>>> 7 4849 2 16:55:49 Fin
>>>>> 8 4849 1 16:55:50 Début
>>>>> 10 4849 1 16:56:52 Fin
>>>>>
>>>>> Hors les lignes concernant l'ID_Donnée 7 et 8 n'apparaissent pas, n'étant
>>>>> pas utilisateur du langage SQL (une lacune qu'il va me falloir combler au
>>>>> plus vite !), je ne vois pas comment corriger le code.
>>>>>
>>>>> Merci encore.
>>>>>
>>>>> Didou
>>>>>
>>>>>
>>>>> "Michel__D" a écrit :
>>>>>
>>>>>> Michel__D a écrit :
>>>>>>> Bonjour,
>>>>>>>
>>>>>>> Didou a écrit :
>>>>>>>> Bonjour Jac (et à toute la communauté)
>>>>>>>>
>>>>>>>> Suite à ta demande voici un exemple (concentré !) de données.
>>>>>>>> ID_Donnée ID_Machine Heure Etat
>>>>>>>> 1 4849 16:55:43 1
>>>>>>>> 2 4849 16:55:44 1
>>>>>>>> 3 4849 16:55:45 1
>>>>>>>> 4 4849 16:55:46 1
>>>>>>>> 5 4849 16:55:47 2
>>>>>>>> 6 4849 16:55:48 2
>>>>>>>> 7 4849 16:55:49 2
>>>>>>>> 8 4849 16:56:50 1
>>>>>>>> 9 4849 16:56:51 1
>>>>>>>> 10 4849 16:56:52 1



1 2