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;
>>
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;
>>
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;
>>
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
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
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
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
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
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
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 encoreDidou 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
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
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 encoreDidou 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
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
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
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