Requete tordue

Le
MacDav
Bonjour,
Imaginez une table avec un champs de date (avec tous les jours) et un champs
Quantité qui peut prendre une valeur parmi une dizaine et qui varie rarement
d'une date à l'autre.
Je souhaite afficher toutes les dates auxquelles ma Quantité change et
afficher également le nombre de jour pendant laquelle la Quantité est
maintenue.
Une idée du comment faire ?

Résultat souhaité sous la forme:

Date Quantité NbJour
01/01/2004 50 2
03/01/2004 40 7
10/01/2004 30 23
02/02/2004 20 28
01/03/2004 10 13
14/03/2004 00 3
17/03/2004 10 4
21/03/2004 20 3
24/03/2004 40 2
26/03/2004 30 14


Exemple de la table:

Date Quantité
01/01/2004 50
02/01/2004 50
03/01/2004 40
04/01/2004 40
05/01/2004 40
06/01/2004 40
07/01/2004 40
08/01/2004 40
09/01/2004 40
10/01/2004 30
11/01/2004 30
12/01/2004 30
13/01/2004 30
14/01/2004 30
15/01/2004 30
16/01/2004 30
17/01/2004 30
18/01/2004 30
19/01/2004 30
20/01/2004 30
21/01/2004 30
22/01/2004 30
23/01/2004 30
24/01/2004 30
25/01/2004 30
26/01/2004 30
27/01/2004 30
28/01/2004 30
29/01/2004 30
30/01/2004 30
31/01/2004 30
01/02/2004 30
02/02/2004 20
03/02/2004 20
04/02/2004 20
05/02/2004 20
06/02/2004 20
07/02/2004 20
08/02/2004 20
09/02/2004 20
10/02/2004 20
11/02/2004 20
12/02/2004 20
13/02/2004 20
14/02/2004 20
15/02/2004 20
16/02/2004 20
17/02/2004 20
18/02/2004 20
19/02/2004 20
20/02/2004 20
21/02/2004 20
22/02/2004 20
23/02/2004 20
24/02/2004 20
25/02/2004 20
26/02/2004 20
27/02/2004 20
28/02/2004 20
29/02/2004 20
01/03/2004 10
02/03/2004 10
03/03/2004 10
04/03/2004 10
05/03/2004 10
06/03/2004 10
07/03/2004 10
08/03/2004 10
09/03/2004 10
10/03/2004 10
11/03/2004 10
12/03/2004 10
13/03/2004 10
14/03/2004 00
15/03/2004 00
16/03/2004 00
17/03/2004 10
18/03/2004 10
19/03/2004 10
20/03/2004 10
21/03/2004 20
22/03/2004 20
23/03/2004 20
24/03/2004 40
25/03/2004 40
26/03/2004 30
27/03/2004 30
28/03/2004 30
29/03/2004 30
30/03/2004 30
31/03/2004 30
01/04/2004 30
02/04/2004 30
03/04/2004 30
04/04/2004 30
05/04/2004 30
06/04/2004 30
07/04/2004 30
08/04/2004 30
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Raymond [mvp]
Le #5053071
Bonsoir.

tu dois pouvoir y arriver avec une requête de regroupement sur la quantité,
une opération de compte sur la quantité et une opération de Premier sur la
date.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"MacDav" news:
Bonjour,
Imaginez une table avec un champs de date (avec tous les jours) et un
champs

Quantité qui peut prendre une valeur parmi une dizaine et qui varie
rarement

d'une date à l'autre.
Je souhaite afficher toutes les dates auxquelles ma Quantité change et
afficher également le nombre de jour pendant laquelle la Quantité est
maintenue.
Une idée du comment faire ?

Résultat souhaité sous la forme:

Date Quantité NbJour
01/01/2004 50 2
03/01/2004 40 7
10/01/2004 30 23
02/02/2004 20 28
01/03/2004 10 13
14/03/2004 00 3
17/03/2004 10 4
21/03/2004 20 3
24/03/2004 40 2
26/03/2004 30 14


Exemple de la table:

Date Quantité
01/01/2004 50
02/01/2004 50
03/01/2004 40
04/01/2004 40
05/01/2004 40
06/01/2004 40
07/01/2004 40
08/01/2004 40
09/01/2004 40
10/01/2004 30
11/01/2004 30
12/01/2004 30
13/01/2004 30
14/01/2004 30
15/01/2004 30
16/01/2004 30
17/01/2004 30
18/01/2004 30
19/01/2004 30
20/01/2004 30
21/01/2004 30
22/01/2004 30
23/01/2004 30
24/01/2004 30
25/01/2004 30
26/01/2004 30
27/01/2004 30
28/01/2004 30
29/01/2004 30
30/01/2004 30
31/01/2004 30
01/02/2004 30
02/02/2004 20
03/02/2004 20
04/02/2004 20
05/02/2004 20
06/02/2004 20
07/02/2004 20
08/02/2004 20
09/02/2004 20
10/02/2004 20
11/02/2004 20
12/02/2004 20
13/02/2004 20
14/02/2004 20
15/02/2004 20
16/02/2004 20
17/02/2004 20
18/02/2004 20
19/02/2004 20
20/02/2004 20
21/02/2004 20
22/02/2004 20
23/02/2004 20
24/02/2004 20
25/02/2004 20
26/02/2004 20
27/02/2004 20
28/02/2004 20
29/02/2004 20
01/03/2004 10
02/03/2004 10
03/03/2004 10
04/03/2004 10
05/03/2004 10
06/03/2004 10
07/03/2004 10
08/03/2004 10
09/03/2004 10
10/03/2004 10
11/03/2004 10
12/03/2004 10
13/03/2004 10
14/03/2004 00
15/03/2004 00
16/03/2004 00
17/03/2004 10
18/03/2004 10
19/03/2004 10
20/03/2004 10
21/03/2004 20
22/03/2004 20
23/03/2004 20
24/03/2004 40
25/03/2004 40
26/03/2004 30
27/03/2004 30
28/03/2004 30
29/03/2004 30
30/03/2004 30
31/03/2004 30
01/04/2004 30
02/04/2004 30
03/04/2004 30
04/04/2004 30
05/04/2004 30
06/04/2004 30
07/04/2004 30
08/04/2004 30




Fred BROUARD
Le #5053041
Un début de solution :

SELECT identity(int, 1, 1) n, *
INTO T_RUPTUREx
FROM (

SELECT TOP 1 R1.*
FROM T_RUPTURE R1
LEFT OUTER JOIN T_RUPTURE R2
ON R1.MaDate = R2.MaDate + 1 AND R2.MaVal is NULL
UNION
SELECT R1.*
FROM T_RUPTURE R1
INNER JOIN T_RUPTURE R2
ON R1.MaDate = R2.MaDate + 1 AND R1.MaVal <> R2.MaVal
) T


SELECT *
FROM T_RUPTUREx

n MaDate MaVal

----------- ------------------------------------------------------
-----------
1 2004-01-01 00:00:00.000 50
2 2004-01-03 00:00:00.000 40
3 2004-01-10 00:00:00.000 30
4 2004-02-02 00:00:00.000 20
5 2004-03-01 00:00:00.000 10
6 2004-03-14 00:00:00.000 0
7 2004-03-17 00:00:00.000 10
8 2004-03-21 00:00:00.000 20
9 2004-03-24 00:00:00.000 40
10 2004-03-26 00:00:00.000 30

Après faire une non équi auto jointure de la table temporaire sur elle
même afin de compter le nombre de jours entre deux lignes.

A +

MacDav a écrit:
Bonjour,
Imaginez une table avec un champs de date (avec tous les jours) et un champs
Quantité qui peut prendre une valeur parmi une dizaine et qui varie rarement
d'une date à l'autre.
Je souhaite afficher toutes les dates auxquelles ma Quantité change et
afficher également le nombre de jour pendant laquelle la Quantité est
maintenue.
Une idée du comment faire ?

Résultat souhaité sous la forme:

Date Quantité NbJour
01/01/2004 50 2
03/01/2004 40 7
10/01/2004 30 23
02/02/2004 20 28
01/03/2004 10 13
14/03/2004 00 3
17/03/2004 10 4
21/03/2004 20 3
24/03/2004 40 2
26/03/2004 30 14


Exemple de la table:

Date Quantité
01/01/2004 50
02/01/2004 50
03/01/2004 40
04/01/2004 40
05/01/2004 40
06/01/2004 40
07/01/2004 40
08/01/2004 40
09/01/2004 40
10/01/2004 30
11/01/2004 30
12/01/2004 30
13/01/2004 30
14/01/2004 30
15/01/2004 30
16/01/2004 30
17/01/2004 30
18/01/2004 30
19/01/2004 30
20/01/2004 30
21/01/2004 30
22/01/2004 30
23/01/2004 30
24/01/2004 30
25/01/2004 30
26/01/2004 30
27/01/2004 30
28/01/2004 30
29/01/2004 30
30/01/2004 30
31/01/2004 30
01/02/2004 30
02/02/2004 20
03/02/2004 20
04/02/2004 20
05/02/2004 20
06/02/2004 20
07/02/2004 20
08/02/2004 20
09/02/2004 20
10/02/2004 20
11/02/2004 20
12/02/2004 20
13/02/2004 20
14/02/2004 20
15/02/2004 20
16/02/2004 20
17/02/2004 20
18/02/2004 20
19/02/2004 20
20/02/2004 20
21/02/2004 20
22/02/2004 20
23/02/2004 20
24/02/2004 20
25/02/2004 20
26/02/2004 20
27/02/2004 20
28/02/2004 20
29/02/2004 20
01/03/2004 10
02/03/2004 10
03/03/2004 10
04/03/2004 10
05/03/2004 10
06/03/2004 10
07/03/2004 10
08/03/2004 10
09/03/2004 10
10/03/2004 10
11/03/2004 10
12/03/2004 10
13/03/2004 10
14/03/2004 00
15/03/2004 00
16/03/2004 00
17/03/2004 10
18/03/2004 10
19/03/2004 10
20/03/2004 10
21/03/2004 20
22/03/2004 20
23/03/2004 20
24/03/2004 40
25/03/2004 40
26/03/2004 30
27/03/2004 30
28/03/2004 30
29/03/2004 30
30/03/2004 30
31/03/2004 30
01/04/2004 30
02/04/2004 30
03/04/2004 30
04/04/2004 30
05/04/2004 30
06/04/2004 30
07/04/2004 30
08/04/2004 30




--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************

MacDav
Le #5053001
Meci pour l'idée mais ca ne marche pas car la même quantité reviens
plusieurs fois dans des série de dates différentes et avec cette méthode la
quantité est regroupé et seule la premiere date ressort.
Merci quand même

"Raymond [mvp]" news:
Bonsoir.

tu dois pouvoir y arriver avec une requête de regroupement sur la
quantité,

une opération de compte sur la quantité et une opération de Premier sur la
date.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"MacDav" news:
Bonjour,
Imaginez une table avec un champs de date (avec tous les jours) et un
champs

Quantité qui peut prendre une valeur parmi une dizaine et qui varie
rarement

d'une date à l'autre.
Je souhaite afficher toutes les dates auxquelles ma Quantité change et
afficher également le nombre de jour pendant laquelle la Quantité est
maintenue.
Une idée du comment faire ?

Résultat souhaité sous la forme:

Date Quantité NbJour
01/01/2004 50 2
03/01/2004 40 7
10/01/2004 30 23
02/02/2004 20 28
01/03/2004 10 13
14/03/2004 00 3
17/03/2004 10 4
21/03/2004 20 3
24/03/2004 40 2
26/03/2004 30 14


Exemple de la table:

Date Quantité
01/01/2004 50
02/01/2004 50
03/01/2004 40
04/01/2004 40
05/01/2004 40
06/01/2004 40
07/01/2004 40
08/01/2004 40
09/01/2004 40
10/01/2004 30
11/01/2004 30
12/01/2004 30
13/01/2004 30
14/01/2004 30
15/01/2004 30
16/01/2004 30
17/01/2004 30
18/01/2004 30
19/01/2004 30
20/01/2004 30
21/01/2004 30
22/01/2004 30
23/01/2004 30
24/01/2004 30
25/01/2004 30
26/01/2004 30
27/01/2004 30
28/01/2004 30
29/01/2004 30
30/01/2004 30
31/01/2004 30
01/02/2004 30
02/02/2004 20
03/02/2004 20
04/02/2004 20
05/02/2004 20
06/02/2004 20
07/02/2004 20
08/02/2004 20
09/02/2004 20
10/02/2004 20
11/02/2004 20
12/02/2004 20
13/02/2004 20
14/02/2004 20
15/02/2004 20
16/02/2004 20
17/02/2004 20
18/02/2004 20
19/02/2004 20
20/02/2004 20
21/02/2004 20
22/02/2004 20
23/02/2004 20
24/02/2004 20
25/02/2004 20
26/02/2004 20
27/02/2004 20
28/02/2004 20
29/02/2004 20
01/03/2004 10
02/03/2004 10
03/03/2004 10
04/03/2004 10
05/03/2004 10
06/03/2004 10
07/03/2004 10
08/03/2004 10
09/03/2004 10
10/03/2004 10
11/03/2004 10
12/03/2004 10
13/03/2004 10
14/03/2004 00
15/03/2004 00
16/03/2004 00
17/03/2004 10
18/03/2004 10
19/03/2004 10
20/03/2004 10
21/03/2004 20
22/03/2004 20
23/03/2004 20
24/03/2004 40
25/03/2004 40
26/03/2004 30
27/03/2004 30
28/03/2004 30
29/03/2004 30
30/03/2004 30
31/03/2004 30
01/04/2004 30
02/04/2004 30
03/04/2004 30
04/04/2004 30
05/04/2004 30
06/04/2004 30
07/04/2004 30
08/04/2004 30








MacDav
Le #5052991
Merci pour cette solution mais je ne comprends pas franchement..
snifff....



"Fred BROUARD" news:
Un début de solution :

SELECT identity(int, 1, 1) n, *
INTO T_RUPTUREx
FROM (

SELECT TOP 1 R1.*
FROM T_RUPTURE R1
LEFT OUTER JOIN T_RUPTURE R2
ON R1.MaDate = R2.MaDate + 1 AND R2.MaVal is NULL
UNION
SELECT R1.*
FROM T_RUPTURE R1
INNER JOIN T_RUPTURE R2
ON R1.MaDate = R2.MaDate + 1 AND R1.MaVal <> R2.MaVal
) T


SELECT *
FROM T_RUPTUREx

n MaDate MaVal

----------- ------------------------------------------------------
-----------
1 2004-01-01 00:00:00.000 50
2 2004-01-03 00:00:00.000 40
3 2004-01-10 00:00:00.000 30
4 2004-02-02 00:00:00.000 20
5 2004-03-01 00:00:00.000 10
6 2004-03-14 00:00:00.000 0
7 2004-03-17 00:00:00.000 10
8 2004-03-21 00:00:00.000 20
9 2004-03-24 00:00:00.000 40
10 2004-03-26 00:00:00.000 30

Après faire une non équi auto jointure de la table temporaire sur elle
même afin de compter le nombre de jours entre deux lignes.

A +

MacDav a écrit:
Bonjour,
Imaginez une table avec un champs de date (avec tous les jours) et un
champs


Quantité qui peut prendre une valeur parmi une dizaine et qui varie
rarement


d'une date à l'autre.
Je souhaite afficher toutes les dates auxquelles ma Quantité change et
afficher également le nombre de jour pendant laquelle la Quantité est
maintenue.
Une idée du comment faire ?

Résultat souhaité sous la forme:

Date Quantité NbJour
01/01/2004 50 2
03/01/2004 40 7
10/01/2004 30 23
02/02/2004 20 28
01/03/2004 10 13
14/03/2004 00 3
17/03/2004 10 4
21/03/2004 20 3
24/03/2004 40 2
26/03/2004 30 14


Exemple de la table:

Date Quantité
01/01/2004 50
02/01/2004 50
03/01/2004 40
04/01/2004 40
05/01/2004 40
06/01/2004 40
07/01/2004 40
08/01/2004 40
09/01/2004 40
10/01/2004 30
11/01/2004 30
12/01/2004 30
13/01/2004 30
14/01/2004 30
15/01/2004 30
16/01/2004 30
17/01/2004 30
18/01/2004 30
19/01/2004 30
20/01/2004 30
21/01/2004 30
22/01/2004 30
23/01/2004 30
24/01/2004 30
25/01/2004 30
26/01/2004 30
27/01/2004 30
28/01/2004 30
29/01/2004 30
30/01/2004 30
31/01/2004 30
01/02/2004 30
02/02/2004 20
03/02/2004 20
04/02/2004 20
05/02/2004 20
06/02/2004 20
07/02/2004 20
08/02/2004 20
09/02/2004 20
10/02/2004 20
11/02/2004 20
12/02/2004 20
13/02/2004 20
14/02/2004 20
15/02/2004 20
16/02/2004 20
17/02/2004 20
18/02/2004 20
19/02/2004 20
20/02/2004 20
21/02/2004 20
22/02/2004 20
23/02/2004 20
24/02/2004 20
25/02/2004 20
26/02/2004 20
27/02/2004 20
28/02/2004 20
29/02/2004 20
01/03/2004 10
02/03/2004 10
03/03/2004 10
04/03/2004 10
05/03/2004 10
06/03/2004 10
07/03/2004 10
08/03/2004 10
09/03/2004 10
10/03/2004 10
11/03/2004 10
12/03/2004 10
13/03/2004 10
14/03/2004 00
15/03/2004 00
16/03/2004 00
17/03/2004 10
18/03/2004 10
19/03/2004 10
20/03/2004 10
21/03/2004 20
22/03/2004 20
23/03/2004 20
24/03/2004 40
25/03/2004 40
26/03/2004 30
27/03/2004 30
28/03/2004 30
29/03/2004 30
30/03/2004 30
31/03/2004 30
01/04/2004 30
02/04/2004 30
03/04/2004 30
04/04/2004 30
05/04/2004 30
06/04/2004 30
07/04/2004 30
08/04/2004 30




--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************




Fred BROUARD
Le #5052931
tu as les ruptures dans ce résultat.
En faisant à nouveau une non équi auto jointure tu pourra compter la
différence entre la date et la date suivante et donc une simple
soustraction te donnera le nombre de jours.

A +

MacDav a écrit:
Merci pour cette solution mais je ne comprends pas franchement..
snifff....



"Fred BROUARD" news:

Un début de solution :

SELECT identity(int, 1, 1) n, *
INTO T_RUPTUREx
FROM (

SELECT TOP 1 R1.*
FROM T_RUPTURE R1
LEFT OUTER JOIN T_RUPTURE R2
ON R1.MaDate = R2.MaDate + 1 AND R2.MaVal is NULL
UNION
SELECT R1.*
FROM T_RUPTURE R1
INNER JOIN T_RUPTURE R2
ON R1.MaDate = R2.MaDate + 1 AND R1.MaVal <> R2.MaVal
) T


SELECT *
FROM T_RUPTUREx

n MaDate MaVal

----------- ------------------------------------------------------
-----------
1 2004-01-01 00:00:00.000 50
2 2004-01-03 00:00:00.000 40
3 2004-01-10 00:00:00.000 30
4 2004-02-02 00:00:00.000 20
5 2004-03-01 00:00:00.000 10
6 2004-03-14 00:00:00.000 0
7 2004-03-17 00:00:00.000 10
8 2004-03-21 00:00:00.000 20
9 2004-03-24 00:00:00.000 40
10 2004-03-26 00:00:00.000 30

Après faire une non équi auto jointure de la table temporaire sur elle
même afin de compter le nombre de jours entre deux lignes.

A +

MacDav a écrit:

Bonjour,
Imaginez une table avec un champs de date (avec tous les jours) et un



champs

Quantité qui peut prendre une valeur parmi une dizaine et qui varie



rarement

d'une date à l'autre.
Je souhaite afficher toutes les dates auxquelles ma Quantité change et
afficher également le nombre de jour pendant laquelle la Quantité est
maintenue.
Une idée du comment faire ?

Résultat souhaité sous la forme:

Date Quantité NbJour
01/01/2004 50 2
03/01/2004 40 7
10/01/2004 30 23
02/02/2004 20 28
01/03/2004 10 13
14/03/2004 00 3
17/03/2004 10 4
21/03/2004 20 3
24/03/2004 40 2
26/03/2004 30 14


Exemple de la table:

Date Quantité
01/01/2004 50
02/01/2004 50
03/01/2004 40
04/01/2004 40
05/01/2004 40
06/01/2004 40
07/01/2004 40
08/01/2004 40
09/01/2004 40
10/01/2004 30
11/01/2004 30
12/01/2004 30
13/01/2004 30
14/01/2004 30
15/01/2004 30
16/01/2004 30
17/01/2004 30
18/01/2004 30
19/01/2004 30
20/01/2004 30
21/01/2004 30
22/01/2004 30
23/01/2004 30
24/01/2004 30
25/01/2004 30
26/01/2004 30
27/01/2004 30
28/01/2004 30
29/01/2004 30
30/01/2004 30
31/01/2004 30
01/02/2004 30
02/02/2004 20
03/02/2004 20
04/02/2004 20
05/02/2004 20
06/02/2004 20
07/02/2004 20
08/02/2004 20
09/02/2004 20
10/02/2004 20
11/02/2004 20
12/02/2004 20
13/02/2004 20
14/02/2004 20
15/02/2004 20
16/02/2004 20
17/02/2004 20
18/02/2004 20
19/02/2004 20
20/02/2004 20
21/02/2004 20
22/02/2004 20
23/02/2004 20
24/02/2004 20
25/02/2004 20
26/02/2004 20
27/02/2004 20
28/02/2004 20
29/02/2004 20
01/03/2004 10
02/03/2004 10
03/03/2004 10
04/03/2004 10
05/03/2004 10
06/03/2004 10
07/03/2004 10
08/03/2004 10
09/03/2004 10
10/03/2004 10
11/03/2004 10
12/03/2004 10
13/03/2004 10
14/03/2004 00
15/03/2004 00
16/03/2004 00
17/03/2004 10
18/03/2004 10
19/03/2004 10
20/03/2004 10
21/03/2004 20
22/03/2004 20
23/03/2004 20
24/03/2004 40
25/03/2004 40
26/03/2004 30
27/03/2004 30
28/03/2004 30
29/03/2004 30
30/03/2004 30
31/03/2004 30
01/04/2004 30
02/04/2004 30
03/04/2004 30
04/04/2004 30
05/04/2004 30
06/04/2004 30
07/04/2004 30
08/04/2004 30




--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************







--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************



Michel Gesnot
Le #5044131
Bonjour MacDav

Peut-être qu'un peu de code sera plus clair pour vous :

Au départ d'une table avec 3 champs dont une clé primaire :
- RecId NunéroAuto
- Date Date/heure
- Quantité Numérique Entier


Dim rstTable As Recordset
Dim dtDatePivot As Date, dtDateDebut As Date, dtDateFin As
Date
Dim intQuantPivot As Integer, intCompteurPivot As Integer
Dim intBoucle As Integer

Set dbsTest = CurrentDb
Set rstTable = dbsTest.OpenRecordset("TestDateQuant",
dbOpenTable)

rstTable.Index = "PrimaryKey"

With rstTable
If .BOF = False Then
.MoveFirst
Do While Not .EOF
If !Quantité = intQuantPivot Then
intBoucle = intBoucle + 1
intCompteurPivot = intCompteurPivot + 1
.MoveNext
Else
If intBoucle > 0 Then 'la première
itération n'a pas encore mis les pivots à jour
'récupérer le pivot : imprimer,
afficher, stocker dans un tableau ou une table
End If
'puis réinitiliser le pivot
intCompteurPivot = 0
dtDatePivot = !Date
intQuantPivot = !Quantité
End If
Loop
.Close
End If
End With

dbsTest.Close

End Sub

Reste éventuellement à gérer les limites de date (dt
DateDébut et dt DateFin) qui peuvent être passée en
paramètres ou lues sur le formulaire.

J'espère que cela vous aidera.

Michel



-----Message d'origine-----
Bonjour,
Imaginez une table avec un champs de date (avec tous les
jours) et un champs

Quantité qui peut prendre une valeur parmi une dizaine et
qui varie rarement

d'une date à l'autre.
Je souhaite afficher toutes les dates auxquelles ma
Quantité change et

afficher également le nombre de jour pendant laquelle la
Quantité est

maintenue.
Une idée du comment faire ?

Résultat souhaité sous la forme:

Date Quantité NbJour
01/01/2004 50 2
03/01/2004 40 7
10/01/2004 30 23
02/02/2004 20 28
01/03/2004 10 13
14/03/2004 00 3
17/03/2004 10 4
21/03/2004 20 3
24/03/2004 40 2
26/03/2004 30 14


Exemple de la table:

Date Quantité
01/01/2004 50
02/01/2004 50
03/01/2004 40
04/01/2004 40
05/01/2004 40
06/01/2004 40
07/01/2004 40
08/01/2004 40
09/01/2004 40
10/01/2004 30
11/01/2004 30
12/01/2004 30
13/01/2004 30
14/01/2004 30
15/01/2004 30
16/01/2004 30
17/01/2004 30
18/01/2004 30
19/01/2004 30
20/01/2004 30
21/01/2004 30
22/01/2004 30
23/01/2004 30
24/01/2004 30
25/01/2004 30
26/01/2004 30
27/01/2004 30
28/01/2004 30
29/01/2004 30
30/01/2004 30
31/01/2004 30
01/02/2004 30
02/02/2004 20
03/02/2004 20
04/02/2004 20
05/02/2004 20
06/02/2004 20
07/02/2004 20
08/02/2004 20
09/02/2004 20
10/02/2004 20
11/02/2004 20
12/02/2004 20
13/02/2004 20
14/02/2004 20
15/02/2004 20
16/02/2004 20
17/02/2004 20
18/02/2004 20
19/02/2004 20
20/02/2004 20
21/02/2004 20
22/02/2004 20
23/02/2004 20
24/02/2004 20
25/02/2004 20
26/02/2004 20
27/02/2004 20
28/02/2004 20
29/02/2004 20
01/03/2004 10
02/03/2004 10
03/03/2004 10
04/03/2004 10
05/03/2004 10
06/03/2004 10
07/03/2004 10
08/03/2004 10
09/03/2004 10
10/03/2004 10
11/03/2004 10
12/03/2004 10
13/03/2004 10
14/03/2004 00
15/03/2004 00
16/03/2004 00
17/03/2004 10
18/03/2004 10
19/03/2004 10
20/03/2004 10
21/03/2004 20
22/03/2004 20
23/03/2004 20
24/03/2004 40
25/03/2004 40
26/03/2004 30
27/03/2004 30
28/03/2004 30
29/03/2004 30
30/03/2004 30
31/03/2004 30
01/04/2004 30
02/04/2004 30
03/04/2004 30
04/04/2004 30
05/04/2004 30
06/04/2004 30
07/04/2004 30
08/04/2004 30


.



Pierre CFI [mvp]
Le #5044081
bonjour
j'ai changer le nom du champ date en madate
voici le code sql de la req
SELECT First(base.Madate) AS PremierDeMadate, base.Quantité, Count(base.Quantité) AS CompteDeQuantité, Month([Madate]) AS Expr1
FROM base
GROUP BY base.Quantité, Month([Madate]);
tu mets dans une req regroupement
Madate Premier
Quantité regroupement
Quantité compter
Mois(Madate) regroupement

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Michel Gesnot" Bonjour MacDav

Peut-être qu'un peu de code sera plus clair pour vous :

Au départ d'une table avec 3 champs dont une clé primaire :
- RecId NunéroAuto
- Date Date/heure
- Quantité Numérique Entier


Dim rstTable As Recordset
Dim dtDatePivot As Date, dtDateDebut As Date, dtDateFin As
Date
Dim intQuantPivot As Integer, intCompteurPivot As Integer
Dim intBoucle As Integer

Set dbsTest = CurrentDb
Set rstTable = dbsTest.OpenRecordset("TestDateQuant",
dbOpenTable)

rstTable.Index = "PrimaryKey"

With rstTable
If .BOF = False Then
.MoveFirst
Do While Not .EOF
If !Quantité = intQuantPivot Then
intBoucle = intBoucle + 1
intCompteurPivot = intCompteurPivot + 1
.MoveNext
Else
If intBoucle > 0 Then 'la première
itération n'a pas encore mis les pivots à jour
'récupérer le pivot : imprimer,
afficher, stocker dans un tableau ou une table
End If
'puis réinitiliser le pivot
intCompteurPivot = 0
dtDatePivot = !Date
intQuantPivot = !Quantité
End If
Loop
.Close
End If
End With

dbsTest.Close

End Sub

Reste éventuellement à gérer les limites de date (dt
DateDébut et dt DateFin) qui peuvent être passée en
paramètres ou lues sur le formulaire.

J'espère que cela vous aidera.

Michel



-----Message d'origine-----
Bonjour,
Imaginez une table avec un champs de date (avec tous les
jours) et un champs

Quantité qui peut prendre une valeur parmi une dizaine et
qui varie rarement

d'une date à l'autre.
Je souhaite afficher toutes les dates auxquelles ma
Quantité change et

afficher également le nombre de jour pendant laquelle la
Quantité est

maintenue.
Une idée du comment faire ?

Résultat souhaité sous la forme:

Date Quantité NbJour
01/01/2004 50 2
03/01/2004 40 7
10/01/2004 30 23
02/02/2004 20 28
01/03/2004 10 13
14/03/2004 00 3
17/03/2004 10 4
21/03/2004 20 3
24/03/2004 40 2
26/03/2004 30 14


Exemple de la table:

Date Quantité
01/01/2004 50
02/01/2004 50
03/01/2004 40
04/01/2004 40
05/01/2004 40
06/01/2004 40
07/01/2004 40
08/01/2004 40
09/01/2004 40
10/01/2004 30
11/01/2004 30
12/01/2004 30
13/01/2004 30
14/01/2004 30
15/01/2004 30
16/01/2004 30
17/01/2004 30
18/01/2004 30
19/01/2004 30
20/01/2004 30
21/01/2004 30
22/01/2004 30
23/01/2004 30
24/01/2004 30
25/01/2004 30
26/01/2004 30
27/01/2004 30
28/01/2004 30
29/01/2004 30
30/01/2004 30
31/01/2004 30
01/02/2004 30
02/02/2004 20
03/02/2004 20
04/02/2004 20
05/02/2004 20
06/02/2004 20
07/02/2004 20
08/02/2004 20
09/02/2004 20
10/02/2004 20
11/02/2004 20
12/02/2004 20
13/02/2004 20
14/02/2004 20
15/02/2004 20
16/02/2004 20
17/02/2004 20
18/02/2004 20
19/02/2004 20
20/02/2004 20
21/02/2004 20
22/02/2004 20
23/02/2004 20
24/02/2004 20
25/02/2004 20
26/02/2004 20
27/02/2004 20
28/02/2004 20
29/02/2004 20
01/03/2004 10
02/03/2004 10
03/03/2004 10
04/03/2004 10
05/03/2004 10
06/03/2004 10
07/03/2004 10
08/03/2004 10
09/03/2004 10
10/03/2004 10
11/03/2004 10
12/03/2004 10
13/03/2004 10
14/03/2004 00
15/03/2004 00
16/03/2004 00
17/03/2004 10
18/03/2004 10
19/03/2004 10
20/03/2004 10
21/03/2004 20
22/03/2004 20
23/03/2004 20
24/03/2004 40
25/03/2004 40
26/03/2004 30
27/03/2004 30
28/03/2004 30
29/03/2004 30
30/03/2004 30
31/03/2004 30
01/04/2004 30
02/04/2004 30
03/04/2004 30
04/04/2004 30
05/04/2004 30
06/04/2004 30
07/04/2004 30
08/04/2004 30


.



Publicité
Poster une réponse
Anonyme