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

regrouppements laborieux !

3 réponses
Avatar
gl
Bonjour,

J'ai une table CMD qui a été mal pensée...mais c'est trop tard.
Cette table comprend les champs suivants :

NumCmd, DateCmd, L1, Desc1, Imput1, Val1, L2, Desc2, Imput2, Val2,
etc..., L5, Desc5, Imput5, Val5.

L(n) : numéro de ligne; Desc(n) = description; Imput(n) = imputation
(numérique); Val (n) = valeur (numérique);

- Dans un intervalle de dates, je dois regrouper les Val par Imputations;
- Les Imput ne sont pas systématiquement identiques de lignes à lignes;

Exemple : Cmd 10500 descr Imput1: 025 valeur 17 *
" descr Imput2: 040
10 **
" descr Imput3: 100
142 ***

Cmd 10501 descr Imput1:200 1405
" descr Imput1: 925
15
" descr Imput1: 040
125 **
" descr Imput1: 025
60 *

Cmd 10502 descr Imput1:100 1650
***
" descr Imput1: 025
49 *
" descr Imput1: 200
2105
" descr Imput1: 090
47

* Je veux donc un état qui me regroupe la somme des montants à imput 025,
soit 17+60+49 = 126
** la somme des montants à imput 040, soit 10+125 = 135
*** La somme des montants à imput 100, soit 142+1650 = 1792.
Etc...

Je réalise bien que la conception de la table est malhabile, mais il n'est
plus possible de changer.

Quelqu'un aurait-il une soluce ?? J'ai essayé des regroupements dans un
état, mais sans succès.
Peut-être en créant une vouvelle table ???

Merci, je sais que vous êtes inventifs !

Thierry_

3 réponses

Avatar
Michel__D
Bonjour,

gl a écrit :
Bonjour,

J'ai une table CMD qui a été mal pensée...mais c'est trop tard.
Cette table comprend les champs suivants :

NumCmd, DateCmd, L1, Desc1, Imput1, Val1, L2, Desc2, Imput2, Val2,
etc..., L5, Desc5, Imput5, Val5.

L(n) : numéro de ligne; Desc(n) = description; Imput(n) = imputation
(numérique); Val (n) = valeur (numérique);

- Dans un intervalle de dates, je dois regrouper les Val par Imputations;
- Les Imput ne sont pas systématiquement identiques de lignes à lignes;

Exemple : Cmd 10500 descr Imput1: 025 valeur 17 *
" descr Imput2: 040
10 **
" descr Imput3: 100
142 ***

Cmd 10501 descr Imput1:200 1405
" descr Imput1: 925
15
" descr Imput1: 040
125 **
" descr Imput1: 025
60 *

Cmd 10502 descr Imput1:100 1650
***
" descr Imput1: 025
49 *
" descr Imput1: 200
2105
" descr Imput1: 090
47

* Je veux donc un état qui me regroupe la somme des montants à imput 025,
soit 17+60+49 = 126
** la somme des montants à imput 040, soit 10+125 = 135
*** La somme des montants à imput 100, soit 142+1650 = 1792.
Etc...

Je réalise bien que la conception de la table est malhabile, mais il n'est
plus possible de changer.

Quelqu'un aurait-il une soluce ?? J'ai essayé des regroupements dans un
état, mais sans succès.
Peut-être en créant une vouvelle table ???

Merci, je sais que vous êtes inventifs !

Thierry



Tu peux réorganiser tes données avec une requête union :

SELECT T.NumCmd, T.DateCmd, T.L1 AS L, T.Desc1 AS Desc, T.Input1 AS
Input, 1 AS Origine
FROM LaTable AS T
UNION
SELECT T.NumCmd, T.DateCmd, T.L2 AS L, T.Desc2 AS Desc, T.Input2 AS
Input, 2 AS Origine
FROM LaTable AS T
UNION
...
Avatar
gl
Dsl, mais la RQ union ne fonctionne pas....

Mais je pense plutôt faire 5 requêtes AJOUT (il y a en effet 5 lignes
distinctes dans ma table).
Cependant, ma requête me renvoie un message d'erreur sybillin...

Voici ma requête :

INSERT INTO T_REGRPT ( Num_Cmd, DateCommande, txt1, val1, imput1 )
SELECT CMD.NUM_CMD, CMD.DateCommande, CMD.txt1, CMD.val1, CMD.imput1
FROM (CLI RIGHT JOIN CMD ON CLI.num_cli = CMD.NUM_CLI) LEFT JOIN FAC ON
CMD.NUM_CMD = FAC.NUM_CMD
WHERE (((CMD.DateCommande) Between [Formulaires]![F_dates]![date_1] And
[Formulaires]![F_dates]![date_2]) AND ((CLI.nom_cli) Like [Name ?] & "*"));

Les req suivantes indiqueront txt2, val2, imput2, etc...
L'exécution de mes 5 req devrait résoudre mon problème.

Message d'erreur :

MS a attribué la valeur 0(null) à 0 champs...erreur de conversion de type,
0 enregistrements n'ont pas été copiés...violation de clé...violation de
verrou...

Afin d'être certain des formats des champs, j'ai recopîé la structure de la
table Cmd et je l'ai appelée T_REGRPT, donc les champs ont le même format.

Que se passe-t-il ?? où ai-je faux ???
Merci,

Thierry_


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

Bonjour,

J'ai une table CMD qui a été mal pensée...mais c'est trop tard.
Cette table comprend les champs suivants :

NumCmd, DateCmd, L1, Desc1, Imput1, Val1, L2, Desc2, Imput2, Val2,
etc..., L5, Desc5, Imput5, Val5.

L(n) : numéro de ligne; Desc(n) = description; Imput(n) = imputation
(numérique); Val (n) = valeur (numérique);

- Dans un intervalle de dates, je dois regrouper les Val par Imputations;
- Les Imput ne sont pas systématiquement identiques de lignes à lignes;

Exemple : Cmd 10500 descr Imput1: 025 valeur 17 *
" descr Imput2: 040 10
**
" descr Imput3: 100 142
***

Cmd 10501 descr Imput1:200 1405
" descr Imput1: 925 15
" descr Imput1: 040 125
**
" descr Imput1: 025 60
*

Cmd 10502 descr Imput1:100 1650
***
" descr Imput1: 025 49
*
" descr Imput1: 200 2105
" descr Imput1: 090 47

* Je veux donc un état qui me regroupe la somme des montants à imput 025,
soit 17+60+49 = 126
** la somme des montants à imput 040, soit 10+125 = 135
*** La somme des montants à imput 100, soit 142+1650 = 1792.
Etc...

Je réalise bien que la conception de la table est malhabile, mais il n'est
plus possible de changer.

Quelqu'un aurait-il une soluce ?? J'ai essayé des regroupements dans un
état, mais sans succès.
Peut-être en créant une vouvelle table ???

Merci, je sais que vous êtes inventifs !

Thierry_


Avatar
Michel__D
Bonjour,

gl a écrit :
Dsl, mais la RQ union ne fonctionne pas....




C'est pourtant le plus simple (peut-être pas le plus optimum, mais bon
vu le contexte).

Mais je pense plutôt faire 5 requêtes AJOUT (il y a en effet 5 lignes
distinctes dans ma table).




Rien compris !!!

Cependant, ma requête me renvoie un message d'erreur sybillin...

Voici ma requête :

INSERT INTO T_REGRPT ( Num_Cmd, DateCommande, txt1, val1, imput1 )
SELECT CMD.NUM_CMD, CMD.DateCommande, CMD.txt1, CMD.val1, CMD.imput1
FROM (CLI RIGHT JOIN CMD ON CLI.num_cli = CMD.NUM_CLI) LEFT JOIN FAC ON
CMD.NUM_CMD = FAC.NUM_CMD
WHERE (((CMD.DateCommande) Between [Formulaires]![F_dates]![date_1] And
[Formulaires]![F_dates]![date_2]) AND ((CLI.nom_cli) Like [Name ?] & "*"));




Pareil ici !!!

Les req suivantes indiqueront txt2, val2, imput2, etc...
L'exécution de mes 5 req devrait résoudre mon problème.




Et encore moins ici !!!

Message d'erreur :

MS a attribué la valeur 0(null) à 0 champs...erreur de conversion de type,
0 enregistrements n'ont pas été copiés...violation de clé...violation de
verrou...

Afin d'être certain des formats des champs, j'ai recopîé la structure de la
table Cmd et je l'ai appelée T_REGRPT, donc les champs ont le même format.

Que se passe-t-il ?? où ai-je faux ???
Merci,

Thierry_


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


Bonjour,

J'ai une table CMD qui a été mal pensée...mais c'est trop tard.
Cette table comprend les champs suivants :

NumCmd, DateCmd, L1, Desc1, Imput1, Val1, L2, Desc2, Imput2, Val2,
etc..., L5, Desc5, Imput5, Val5.

L(n) : numéro de ligne; Desc(n) = description; Imput(n) = imputation
(numérique); Val (n) = valeur (numérique);

- Dans un intervalle de dates, je dois regrouper les Val par Imputations;
- Les Imput ne sont pas systématiquement identiques de lignes à lignes;

Exemple : Cmd 10500 descr Imput1: 025 valeur 17 *
" descr Imput2: 040 10
**
" descr Imput3: 100 142
***

Cmd 10501 descr Imput1:200 1405
" descr Imput1: 925 15
" descr Imput1: 040 125
**
" descr Imput1: 025 60
*

Cmd 10502 descr Imput1:100 1650
***
" descr Imput1: 025 49
*
" descr Imput1: 200 2105
" descr Imput1: 090 47

* Je veux donc un état qui me regroupe la somme des montants à imput 025,
soit 17+60+49 = 126
** la somme des montants à imput 040, soit 10+125 = 135
*** La somme des montants à imput 100, soit 142+1650 = 1792.
Etc...

Je réalise bien que la conception de la table est malhabile, mais il n'est
plus possible de changer.

Quelqu'un aurait-il une soluce ?? J'ai essayé des regroupements dans un
état, mais sans succès.
Peut-être en créant une vouvelle table ???

Merci, je sais que vous êtes inventifs !

Thierry_