OVH Cloud OVH Cloud

Concaténation complexe

15 réponses
Avatar
Green
Encore une fois je me tourne vers, les experts car moi je m'y perds dans ce
que j'ai besoin ...

Sous Access 2003 :

Ma table initial est :

sku Size Color Result

440402 06 90
440402 07 90
440402 09 90
440402 10 90
440402 12 90
663600 13 90
663600 14 90
663600 16 10
663600 17 10
663600 02 90
663600 04 90

L'exercice est de remplir le champs result.
Comme résultat attendu :

sku Size Color Result
440402 06 90 4404020690|4404020790|4404020990|4404021090|4404021290
440402 07 90
440402 09 90
440402 10 90
440402 12 90

663600 13 90 6636001390|6636001490|6636001610|6636001710|6636000290|6636000490
663600 14 90
663600 16 10
663600 17 10
663600 02 90
663600 04 90

Donc une concaténation dans le champs 'RESULT' du champs SKU & Size & Color
séparé par une pipe "|" ......
Le contenu de la ligne result change quand le numéro de SKU change...

Je suis essoufflée juste d'expliquer

Merci a tous ceux qui prendront la peine d'analyser tout ça

10 réponses

1 2
Avatar
Olivier
Bonsoir Green
J'ai besoin d'avoir un peu plus explications..
Tu veux la concaténation QUE sur la première ligne de rupture de SKU ???,
car sur ton exemple, à la 1ere rupture, tu mets la concaténation sur la
deuxièmre ligne !!.


440402 06 90 4404020690|4404020790|4404020990|4404021090|4404021290
440402 07 90
440402 09 90
440402 10 90
440402 12 90

663600 13 90 4404020690|4404020790|4404020990|4404021090|4404021290
663600 14 90
663600 16 10
663600 17 10
663600 02 90
663600 04 90

Envoie moi ta réponse à nobodyisperfecxxxxChezIfrance.com (Enlève les
xxxx et remplace "Chez" par @), cela évite les spams des robots.

Olivier
Avatar
Papy Bernard
Slt,

De Green
Encore une fois je me tourne vers, les experts car moi je m'y perds
dans ce que j'ai besoin ...

Sous Access 2003 :


Il n'y a pas qu'Access qui puisse faire ce que tu souhaites obtenir.

Ma table initial est :

sku Size Color Result

440402 06 90
440402 07 90
440402 09 90
....

663600 02 90
663600 04 90

L'exercice est de remplir le champs result.
Comme résultat attendu :

sku Size Color Result
440402 06 90 4404020690|4404020790|4404020990|4404021090|4404021290
440402 07 90
...

440402 12 90

663600 13 90
6636001390|6636001490|6636001610|6636001710|6636000290|6636000490
663600 14 90 663600 16 10
...

663600 04 90

Donc une concaténation dans le champs 'RESULT' du champs SKU & Size &
Color séparé par une pipe "|" ......
Le contenu de la ligne result change quand le numéro de SKU change...



Tu décortiques ce qui suit (pas difficile) pour appréhender la démarche :

Deux boucles:
Une première pour auscultation du fichier
Une seconde pour auscultation et concaténation des infos sur un même
sku
passaghe au sku suivant

;= déclarations des variables locales
@local(sku,sku2,size,color,result,chaine),

;= aucultation du fichier "concat" et ses champs "concant.sku",
"concat.size", "concat.color"
;initalisation du premier enregistrement
@while(@get(concat.sku)<>#n/a!,
sku:=@get(concat.sku),
size:=@get(concat.size),
color:=@get(concat.color),
chaine:=sku&size&color,

;= passage à l'enregistrement suivant
@next(concat.sku),
@next(concat.size),
@next(concat.color),

;= lecture et comparaison de l'enregistement suivant
@while(@get(concat.sku)=sku,
sku2:=@get(concat.sku),
size:=@get(concat.size),
color:=@get(concat.color),

;= concaténation
chaine:=chaine&"|"&sku2&size&color,

;= passage à l'enregistrement suivant dans la boucle
@next(concat.sku),
@next(concat.size),
@next(concat.color),
@next(concat.result)),

;= édition du résultat

@put(concat.result,chaine),
@next(concat.result))


Le résultat de la concaténation, et je ne vois pas comment on peut faire
autrement, sera affiché sur la dernère ligne de chaque sku et non la
première.
Plus rationnellement, le résultat devrait être enregistrer dans une table
séparéee.

Au total, 20 lignes de code (on ne peut plus simple) sous Framework
(programme DOS)
Si quelqu'un fait faire plus court, et aussi clair, sous Access, je suis
prêt à me convertir.

Merci de m'avoir donné l'occasion de faire fonctionner mes neuronnes.

--
A+
Papy Bernard (RTCien malgré lui)

Avatar
Papy Bernard
Slt,

De Green
Encore une fois je me tourne vers, les experts car moi je m'y perds
dans ce que j'ai besoin ...

Sous Access 2003 :


Il n'y a pas qu'Access qui puisse faire ce que tu souhaites obtenir.

Ma table initial est :

sku Size Color Result

440402 06 90
440402 07 90
440402 09 90
....

663600 02 90
663600 04 90

L'exercice est de remplir le champs result.
Comme résultat attendu :

sku Size Color Result
440402 06 90 4404020690|4404020790|4404020990|4404021090|4404021290
440402 07 90
...

440402 12 90

663600 13 90
6636001390|6636001490|6636001610|6636001710|6636000290|6636000490
663600 14 90 663600 16 10
...

663600 04 90

Donc une concaténation dans le champs 'RESULT' du champs SKU & Size &
Color séparé par une pipe "|" ......
Le contenu de la ligne result change quand le numéro de SKU change...



Tu décortiques ce qui suit (pas difficile) pour appréhender la démarche :

Deux boucles:
Une première pour auscultation du fichier
Une seconde pour auscultation et concaténation des infos sur un même
sku
passaghe au sku suivant

;= déclarations des variables locales
@local(sku,sku2,size,color,result,chaine),

;= aucultation du fichier "concat" et ses champs "concant.sku",
"concat.size", "concat.color"
;initalisation du premier enregistrement
@while(@get(concat.sku)<>#n/a!,
sku:=@get(concat.sku),
size:=@get(concat.size),
color:=@get(concat.color),
chaine:=sku&size&color,

;= passage à l'enregistrement suivant
@next(concat.sku),
@next(concat.size),
@next(concat.color),

;= lecture et comparaison de l'enregistement suivant
@while(@get(concat.sku)=sku,
sku2:=@get(concat.sku),
size:=@get(concat.size),
color:=@get(concat.color),

;= concaténation
chaine:=chaine&"|"&sku2&size&color,

;= passage à l'enregistrement suivant dans la boucle
@next(concat.sku),
@next(concat.size),
@next(concat.color),
@next(concat.result)),

;= édition du résultat

@put(concat.result,chaine),
@next(concat.result))


Le résultat de la concaténation, et je ne vois pas comment on peut faire
autrement, sera affiché sur la dernère ligne de chaque sku et non la
première.
Plus rationnellement, le résultat devrait être enregistrer dans une table
séparéee.

Au total, 20 lignes de code (on ne peut plus simple) sous Framework
(programme DOS)
Si quelqu'un fait faire plus court, et aussi clair, sous Access, je suis
prêt à me convertir.

Merci de m'avoir donné l'occasion de faire fonctionner mes neuronnes.

--
A+
Papy Bernard (RTCien malgré lui)

Avatar
Papy Bernard
Slt,

De Green
Encore une fois je me tourne vers, les experts car moi je m'y perds
dans ce que j'ai besoin ...

Sous Access 2003 :


Il n'y a pas qu'Access qui puisse faire ce que tu souhaites obtenir.

Ma table initial est :

sku Size Color Result

440402 06 90
440402 07 90
440402 09 90
....

663600 02 90
663600 04 90

L'exercice est de remplir le champs result.
Comme résultat attendu :

sku Size Color Result
440402 06 90 4404020690|4404020790|4404020990|4404021090|4404021290
440402 07 90
...

440402 12 90

663600 13 90
6636001390|6636001490|6636001610|6636001710|6636000290|6636000490
663600 14 90 663600 16 10
...

663600 04 90

Donc une concaténation dans le champs 'RESULT' du champs SKU & Size &
Color séparé par une pipe "|" ......
Le contenu de la ligne result change quand le numéro de SKU change...



Tu décortiques ce qui suit (pas difficile) pour appréhender la démarche :

Deux boucles:
Une première pour auscultation du fichier
Une seconde pour auscultation et concaténation des infos sur un même
sku et édition
passage au sku suivant

;= déclarations des variables locales
@local(sku,sku2,size,color,result,chaine),

;= aucultation du fichier "concat" et ses champs "concant.sku",
"concat.size", "concat.color"
;initalisation du premier enregistrement
@while(@get(concat.sku)<>#n/a!,
sku:=@get(concat.sku),
size:=@get(concat.size),
color:=@get(concat.color),
chaine:=sku&size&color,

;= passage à l'enregistrement suivant
@next(concat.sku),
@next(concat.size),
@next(concat.color),

;= lecture et comparaison de l'enregistement suivant
@while(@get(concat.sku)=sku,
sku2:=@get(concat.sku),
size:=@get(concat.size),
color:=@get(concat.color),

;= concaténation
chaine:=chaine&"|"&sku2&size&color,

;= passage à l'enregistrement suivant dans la boucle
@next(concat.sku),
@next(concat.size),
@next(concat.color),
@next(concat.result)),

;= édition du résultat

@put(concat.result,chaine),
@next(concat.result))


Le résultat de la concaténation, et je ne vois pas comment on peut faire
autrement, sera affiché sur la dernère ligne de chaque sku et non la
première.
Plus rationnellement, le résultat devrait être enregistrer dans une table
séparéee.

Au total, 20 lignes de code (on ne peut plus simple) sous Framework
(programme DOS)
Si quelqu'un fait faire plus court, et aussi clair, sous Access, je suis
prêt à me convertir.

Merci de m'avoir donné l'occasion de faire fonctionner mes neuronnes.

--
A+
Papy Bernard (RTCien malgré lui)

Avatar
3stone
Salut,

"Green"
| Encore une fois je me tourne vers, les experts car moi je m'y perds dans ce
| que j'ai besoin ...
|


Tu peux t'inspirer de ceci...
http://access.jessy.free.fr/htm/Query/ConcatForQuery.htm


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Papy Bernard
Slt,

De Green
Encore une fois je me tourne vers, les experts car moi je m'y perds
dans ce que j'ai besoin ...

Sous Access 2003 :


Il n'y a pas qu'Access qui puisse faire ce que tu souhaites obtenir.

Ma table initial est :

sku Size Color Result

440402 06 90
440402 07 90
440402 09 90
....

663600 02 90
663600 04 90

L'exercice est de remplir le champs result.
Comme résultat attendu :

sku Size Color Result
440402 06 90 4404020690|4404020790|4404020990|4404021090|4404021290
440402 07 90
...

440402 12 90

663600 13 90
6636001390|6636001490|6636001610|6636001710|6636000290|6636000490
663600 14 90 663600 16 10
...

663600 04 90

Donc une concaténation dans le champs 'RESULT' du champs SKU & Size &
Color séparé par une pipe "|" ......
Le contenu de la ligne result change quand le numéro de SKU change...



Tu décortiques ce qui suit (pas difficile) pour appréhender la démarche :

Deux boucles:
Une première pour auscultation du fichier
Une seconde pour auscultation et concaténation des infos sur un même
sku et édition
passage au sku suivant

;= déclarations des variables locales
@local(sku,sku2,size,color,result,chaine),

;= aucultation du fichier "concat" et ses champs "concant.sku",
"concat.size", "concat.color"
;initalisation du premier enregistrement
@while(@get(concat.sku)<>#n/a!,
sku:=@get(concat.sku),
size:=@get(concat.size),
color:=@get(concat.color),
chaine:=sku&size&color,

;= passage à l'enregistrement suivant
@next(concat.sku),
@next(concat.size),
@next(concat.color),

;= lecture et comparaison de l'enregistement suivant
@while(@get(concat.sku)=sku,
sku2:=@get(concat.sku),
size:=@get(concat.size),
color:=@get(concat.color),

;= concaténation
chaine:=chaine&"|"&sku2&size&color,

;= passage à l'enregistrement suivant dans la boucle
@next(concat.sku),
@next(concat.size),
@next(concat.color),
@next(concat.result)),

;= édition du résultat

@put(concat.result,chaine),
@next(concat.result))


Le résultat de la concaténation, et je ne vois pas comment on peut faire
autrement, sera affiché sur la dernère ligne de chaque sku et non la
première.
Plus rationnellement, le résultat devrait être enregistrer dans une table
séparéee.

Au total, 20 lignes de code (on ne peut plus simple) sous Framework
(programme DOS)
Si quelqu'un fait faire plus court, et aussi clair, sous Access, je suis
prêt à me convertir.

Merci de m'avoir donné l'occasion de faire fonctionner mes neuronnes.

--
A+
Papy Bernard (RTCien malgré lui)

Avatar
3stone
"Papy Bernard"
|
| --
| A+
| Papy Bernard (RTCien malgré lui)



Inutile de sauter sur le tuyau !!

;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Green
Bonjour Olivier,

Oui la concaténation doit être sur la première ligne.
Dans l'exemple elle est sur la 2è car manque d'espace dans l'écran alors par
défaut , sans que je le veule, ça c'est mis sur la 2è ligne

merci


Bonsoir Green
J'ai besoin d'avoir un peu plus explications..
Tu veux la concaténation QUE sur la première ligne de rupture de SKU ???,
car sur ton exemple, à la 1ere rupture, tu mets la concaténation sur la
deuxièmre ligne !!.


440402 06 90 4404020690|4404020790|4404020990|4404021090|4404021290
440402 07 90
440402 09 90
440402 10 90
440402 12 90

663600 13 90 4404020690|4404020790|4404020990|4404021090|4404021290
663600 14 90
663600 16 10
663600 17 10
663600 02 90
663600 04 90

Envoie moi ta réponse à nobodyisperfecxxxxChezIfrance.com (Enlève les
xxxx et remplace "Chez" par @), cela évite les spams des robots.

Olivier





Avatar
Nobodyisperfect
Bonjour,

Papy, ton explication est un peu touffue 8-) mais correcte. Dans quel
langage codes-tu ??
Juste une p'tite précision.. Le résultat est sur la 1er ligne !! Pourquoi la
dernière ???.

See you later
Olivier

N.B: J'ai envoyé un exemple à Line, est cela lui convient parfaitement ;-).
Affaire classée.
Avatar
Nobodyisperfect
C'est pour toi PAPY BERNARD !!.. Sur 32 lignes de code, mais le résultat sur
la 1ere ligne 8-).
----------------------------------------------------------------------------
---------------------------
Dim MyDb as Database
Dim FirstRst As Recordset
Dim SecondRst As Recordset
Dim Variablex As String
Set MyDb = CurrentDb
Set FirstRst = MyDb.OpenRecordset("T_Table")
Set SecondRst = MyDb.OpenRecordset("T_Table")
With FirstRst
Variablex = ""
While Not .EOF
.Edit
!Result = Null
If Variablex = !SKU Then
Else
While Not SecondRst.EOF
SecondRst.Edit
If !SKU = MonSecondRecordset!SKU Then
!Result = !Result & SecondRst!SKU & SecondRst!Size &
SecondRst!Color & "|"
Else
End If
SecondRst.Update
SecondRst.MoveNext
Wend
End If
Variablex = !SKU
.Update
.MoveNext
Wend
End With
Set FirsRst = Nothing
Set SecondRst = Nothing
MyDb.Close
----------------------------------------------------------------------------
-----------------------------------------
Le résultat de la concaténation, et je ne vois pas comment on peut faire
autrement, sera affiché sur la dernère ligne de chaque sku et non la
première.
Plus rationnellement, le résultat devrait être enregistrer dans une table
séparéee.

Au total, 20 lignes de code (on ne peut plus simple) sous Framework
(programme DOS)
Si quelqu'un fait faire plus court, et aussi clair, sous Access, je suis
prêt à me convertir.

Merci de m'avoir donné l'occasion de faire fonctionner mes neuronnes.

--
A+
Papy Bernard (RTCien malgré lui)





1 2