J'ai une table avec plusieurs champs C1, C2, C3 :
- C1 est l'iD de chaque enregistrement,
- C2 contient le nom de l'enregistrement,
- C3 renvoi =E0 un iD, appel=E9 "p=E8re".
Elle se pr=E9sente de la mani=E8re suivante :
C1 C2 C3
1 A
2 AG 1
3 AK 1
4 AGY 2
5 AGH 2
6 B
7 BC 6
8 BCJ 7
Le champs C3 permet de hi=E9rarchiser les donn=E9es.
Mon objectif est de transformer cette table est une table de la forme
suivante :
A
A AG
A AG AGY
A AG AGH
A AK
B
B BC
B BC BCJ
Cette forme est plus visuelle : un coups d'oeil permet de comprendre
la hi=E9rarchie.
Vous devinez ma question : je n'y arrive pas !!!
J'ai essay=E9 en cr=E9ant des requ=EAtes qui contiennent par exemple
(A,B...), (AG, AK, BC...)... J'ai 13 niveaux hi=E9rarchiques. Les 13
niveaux ne sont pas toujours remplis.
Une id=E9e ?
Si j'ai bien compris, cela veut dire que la valeur de ton champ C3 ne peut donc pas être supérieur à 13, non ?
A bientôt, Richard.
"moromain" a écrit dans le message de news:
Bonjour,
J'ai une table avec plusieurs champs C1, C2, C3 : - C1 est l'iD de chaque enregistrement, - C2 contient le nom de l'enregistrement, - C3 renvoi à un iD, appelé "père". Elle se présente de la manière suivante : C1 C2 C3 1 A 2 AG 1 3 AK 1 4 AGY 2 5 AGH 2 6 B 7 BC 6 8 BCJ 7 Le champs C3 permet de hiérarchiser les données. Mon objectif est de transformer cette table est une table de la forme suivante : A A AG A AG AGY A AG AGH A AK B B BC B BC BCJ Cette forme est plus visuelle : un coups d'oeil permet de comprendre la hiérarchie. Vous devinez ma question : je n'y arrive pas !!! J'ai essayé en créant des requêtes qui contiennent par exemple (A,B...), (AG, AK, BC...)... J'ai 13 niveaux hiérarchiques. Les 13 niveaux ne sont pas toujours remplis. Une idée ?
Bonsoir Moromain,
Si j'ai bien compris, cela veut dire que la valeur de ton champ C3 ne peut
donc pas être supérieur à 13, non ?
A bientôt,
Richard.
"moromain" <rm.acwed@gmail.com> a écrit dans le message de news:
1184871677.823430.185700@q75g2000hsh.googlegroups.com...
Bonjour,
J'ai une table avec plusieurs champs C1, C2, C3 :
- C1 est l'iD de chaque enregistrement,
- C2 contient le nom de l'enregistrement,
- C3 renvoi à un iD, appelé "père".
Elle se présente de la manière suivante :
C1 C2 C3
1 A
2 AG 1
3 AK 1
4 AGY 2
5 AGH 2
6 B
7 BC 6
8 BCJ 7
Le champs C3 permet de hiérarchiser les données.
Mon objectif est de transformer cette table est une table de la forme
suivante :
A
A AG
A AG AGY
A AG AGH
A AK
B
B BC
B BC BCJ
Cette forme est plus visuelle : un coups d'oeil permet de comprendre
la hiérarchie.
Vous devinez ma question : je n'y arrive pas !!!
J'ai essayé en créant des requêtes qui contiennent par exemple
(A,B...), (AG, AK, BC...)... J'ai 13 niveaux hiérarchiques. Les 13
niveaux ne sont pas toujours remplis.
Une idée ?
Si j'ai bien compris, cela veut dire que la valeur de ton champ C3 ne peut donc pas être supérieur à 13, non ?
A bientôt, Richard.
"moromain" a écrit dans le message de news:
Bonjour,
J'ai une table avec plusieurs champs C1, C2, C3 : - C1 est l'iD de chaque enregistrement, - C2 contient le nom de l'enregistrement, - C3 renvoi à un iD, appelé "père". Elle se présente de la manière suivante : C1 C2 C3 1 A 2 AG 1 3 AK 1 4 AGY 2 5 AGH 2 6 B 7 BC 6 8 BCJ 7 Le champs C3 permet de hiérarchiser les données. Mon objectif est de transformer cette table est une table de la forme suivante : A A AG A AG AGY A AG AGH A AK B B BC B BC BCJ Cette forme est plus visuelle : un coups d'oeil permet de comprendre la hiérarchie. Vous devinez ma question : je n'y arrive pas !!! J'ai essayé en créant des requêtes qui contiennent par exemple (A,B...), (AG, AK, BC...)... J'ai 13 niveaux hiérarchiques. Les 13 niveaux ne sont pas toujours remplis. Une idée ?
moromain
Eh non ! Comme tu peux le voir dans l'exemple fourni, C3 contient l'iD d'un enregistrement d'un niveau hiérarchique supérieur. Autrement dit, le champs C3 de l'enregistrement 1450 peut contenir la valeur 1307 (je dis n'importe quoi), si 1307 est le niveau directement supérieur à 1450. Est-ce que je me fais bien comprendre ? Mon problème n'est pas simple à expliquer.
Eh non ! Comme tu peux le voir dans l'exemple fourni, C3 contient l'iD
d'un enregistrement d'un niveau hiérarchique supérieur. Autrement dit,
le champs C3 de l'enregistrement 1450 peut contenir la valeur 1307 (je
dis n'importe quoi), si 1307 est le niveau directement supérieur à
1450.
Est-ce que je me fais bien comprendre ? Mon problème n'est pas simple
à expliquer.
Eh non ! Comme tu peux le voir dans l'exemple fourni, C3 contient l'iD d'un enregistrement d'un niveau hiérarchique supérieur. Autrement dit, le champs C3 de l'enregistrement 1450 peut contenir la valeur 1307 (je dis n'importe quoi), si 1307 est le niveau directement supérieur à 1450. Est-ce que je me fais bien comprendre ? Mon problème n'est pas simple à expliquer.
Fabien
Eh non ! Comme tu peux le voir dans l'exemple fourni, C3 contient l'iD d'un enregistrement d'un niveau hiérarchique supérieur. Autrement dit, le champs C3 de l'enregistrement 1450 peut contenir la valeur 1307 (je dis n'importe quoi), si 1307 est le niveau directement supérieur à 1450. Est-ce que je me fais bien comprendre ? Mon problème n'est pas simple à expliquer.
Bonjour,
Une solution 1- Soit ta table avec ses 3 Champs C1 C2 C3 2- Une requete Requête1 sur cette table :SELECT Len([c2]) AS Longueur, Source.c2 FROM Source; 3- La table Cible composée de 13 Champs nommés Champ1 à champ13 4- le code ci dessous Public Function change() Dim Db As DAO.Database Dim Rst_source As DAO.Recordset Dim I, Lg As Integer Dim StrSql, StrSql_Cible, StrSql_Source As String Set Db = CurrentDb Set Rst_source = Db.OpenRecordset("Requête1")
While Not Rst_source.EOF Lg = Rst_source![Longueur] StrSql = "INSERT INTO Cible (" StrSql_Source = "" StrSql_Cible = "" For I = 1 To Lg StrSql_Cible = StrSql_Cible & "[Champ" & I & "], " StrSql_Source = StrSql_Source & "'" & Left(Rst_source![C2], I) & "' as exp" & I & ", " Next I StrSql_Cible = Left(StrSql_Cible, Len(StrSql_Cible) - 2) & ")" StrSql_Source = Left(StrSql_Source, Len(StrSql_Source) - 2) StrSql = StrSql & StrSql_Cible & " " StrSql = StrSql & "Select " & StrSql_Source & ";" DoCmd.SetWarnings False DoCmd.RunSQL StrSql DoCmd.SetWarnings True Rst_source.MoveNext Wend Rst_source.Close Set Rst_source = Nothing Set Db = Nothing End Function
et on obtient je pense le résultat souhaité.
Eh non ! Comme tu peux le voir dans l'exemple fourni, C3 contient l'iD
d'un enregistrement d'un niveau hiérarchique supérieur. Autrement dit,
le champs C3 de l'enregistrement 1450 peut contenir la valeur 1307 (je
dis n'importe quoi), si 1307 est le niveau directement supérieur à
1450.
Est-ce que je me fais bien comprendre ? Mon problème n'est pas simple
à expliquer.
Bonjour,
Une solution
1- Soit ta table avec ses 3 Champs C1 C2 C3
2- Une requete Requête1 sur cette table :SELECT Len([c2]) AS Longueur,
Source.c2
FROM Source;
3- La table Cible composée de 13 Champs nommés Champ1 à champ13
4- le code ci dessous
Public Function change()
Dim Db As DAO.Database
Dim Rst_source As DAO.Recordset
Dim I, Lg As Integer
Dim StrSql, StrSql_Cible, StrSql_Source As String
Set Db = CurrentDb
Set Rst_source = Db.OpenRecordset("Requête1")
While Not Rst_source.EOF
Lg = Rst_source![Longueur]
StrSql = "INSERT INTO Cible ("
StrSql_Source = ""
StrSql_Cible = ""
For I = 1 To Lg
StrSql_Cible = StrSql_Cible & "[Champ" & I & "], "
StrSql_Source = StrSql_Source & "'" & Left(Rst_source![C2],
I) & "' as exp" & I & ", "
Next I
StrSql_Cible = Left(StrSql_Cible, Len(StrSql_Cible) - 2) & ")"
StrSql_Source = Left(StrSql_Source, Len(StrSql_Source) - 2)
StrSql = StrSql & StrSql_Cible & " "
StrSql = StrSql & "Select " & StrSql_Source & ";"
DoCmd.SetWarnings False
DoCmd.RunSQL StrSql
DoCmd.SetWarnings True
Rst_source.MoveNext
Wend
Rst_source.Close
Set Rst_source = Nothing
Set Db = Nothing
End Function
Eh non ! Comme tu peux le voir dans l'exemple fourni, C3 contient l'iD d'un enregistrement d'un niveau hiérarchique supérieur. Autrement dit, le champs C3 de l'enregistrement 1450 peut contenir la valeur 1307 (je dis n'importe quoi), si 1307 est le niveau directement supérieur à 1450. Est-ce que je me fais bien comprendre ? Mon problème n'est pas simple à expliquer.
Bonjour,
Une solution 1- Soit ta table avec ses 3 Champs C1 C2 C3 2- Une requete Requête1 sur cette table :SELECT Len([c2]) AS Longueur, Source.c2 FROM Source; 3- La table Cible composée de 13 Champs nommés Champ1 à champ13 4- le code ci dessous Public Function change() Dim Db As DAO.Database Dim Rst_source As DAO.Recordset Dim I, Lg As Integer Dim StrSql, StrSql_Cible, StrSql_Source As String Set Db = CurrentDb Set Rst_source = Db.OpenRecordset("Requête1")
While Not Rst_source.EOF Lg = Rst_source![Longueur] StrSql = "INSERT INTO Cible (" StrSql_Source = "" StrSql_Cible = "" For I = 1 To Lg StrSql_Cible = StrSql_Cible & "[Champ" & I & "], " StrSql_Source = StrSql_Source & "'" & Left(Rst_source![C2], I) & "' as exp" & I & ", " Next I StrSql_Cible = Left(StrSql_Cible, Len(StrSql_Cible) - 2) & ")" StrSql_Source = Left(StrSql_Source, Len(StrSql_Source) - 2) StrSql = StrSql & StrSql_Cible & " " StrSql = StrSql & "Select " & StrSql_Source & ";" DoCmd.SetWarnings False DoCmd.RunSQL StrSql DoCmd.SetWarnings True Rst_source.MoveNext Wend Rst_source.Close Set Rst_source = Nothing Set Db = Nothing End Function
et on obtient je pense le résultat souhaité.
Richard_35
Bonjour Moromain,
Ton fichier doit être un fichier de nomenclature, non ? Dans ton exemple : C1 C2 C3 1 A 2 AG 1 3 AK 1 4 AGY 2 5 AGH 2 6 B 7 BC 6 8 BCJ 7
Est-il possible d'avoir 2 pères pour un fils, soit, par exemple : 9 AK 2 ==> AK serait un composant de A et de AG.
A bientôt, Richard.
"moromain" a écrit dans le message de news:
Eh non ! Comme tu peux le voir dans l'exemple fourni, C3 contient l'iD d'un enregistrement d'un niveau hiérarchique supérieur. Autrement dit, le champs C3 de l'enregistrement 1450 peut contenir la valeur 1307 (je dis n'importe quoi), si 1307 est le niveau directement supérieur à 1450. Est-ce que je me fais bien comprendre ? Mon problème n'est pas simple à expliquer.
Bonjour Moromain,
Ton fichier doit être un fichier de nomenclature, non ?
Dans ton exemple :
C1 C2 C3
1 A
2 AG 1
3 AK 1
4 AGY 2
5 AGH 2
6 B
7 BC 6
8 BCJ 7
Est-il possible d'avoir 2 pères pour un fils, soit, par exemple :
9 AK 2
==> AK serait un composant de A et de AG.
A bientôt,
Richard.
"moromain" <rm.acwed@gmail.com> a écrit dans le message de news:
1184914939.939076.47130@22g2000hsm.googlegroups.com...
Eh non ! Comme tu peux le voir dans l'exemple fourni, C3 contient l'iD
d'un enregistrement d'un niveau hiérarchique supérieur. Autrement dit,
le champs C3 de l'enregistrement 1450 peut contenir la valeur 1307 (je
dis n'importe quoi), si 1307 est le niveau directement supérieur à
1450.
Est-ce que je me fais bien comprendre ? Mon problème n'est pas simple
à expliquer.
Ton fichier doit être un fichier de nomenclature, non ? Dans ton exemple : C1 C2 C3 1 A 2 AG 1 3 AK 1 4 AGY 2 5 AGH 2 6 B 7 BC 6 8 BCJ 7
Est-il possible d'avoir 2 pères pour un fils, soit, par exemple : 9 AK 2 ==> AK serait un composant de A et de AG.
A bientôt, Richard.
"moromain" a écrit dans le message de news:
Eh non ! Comme tu peux le voir dans l'exemple fourni, C3 contient l'iD d'un enregistrement d'un niveau hiérarchique supérieur. Autrement dit, le champs C3 de l'enregistrement 1450 peut contenir la valeur 1307 (je dis n'importe quoi), si 1307 est le niveau directement supérieur à 1450. Est-ce que je me fais bien comprendre ? Mon problème n'est pas simple à expliquer.
moromain
Pour Richard : Oui c'est une nomenclature. Non, un fils n'a qu'un père, et un père peut avoir plusieurs fils.
Pour Fabien : Je regarde ça.
Pour Richard :
Oui c'est une nomenclature.
Non, un fils n'a qu'un père, et un père peut avoir plusieurs fils.
Pour Richard : Oui c'est une nomenclature. Non, un fils n'a qu'un père, et un père peut avoir plusieurs fils.
Pour Fabien : Je regarde ça.
moromain
Pour Fabien : J'ai regardé. Compter le nombre de caractères, c'est malin ! Malheureusement, j'ai choisi de présenté mon problème avec des lettres (1 lettre pour le niveau 1, 2 pour le niveau 2, etc.). J'aurai du préciser que c'était pour l'exemple, et que le champs C2 contient du texte de longueur variable (des mots et des noms). Je ne vois pas comment adapter ta solution.
Pour Fabien :
J'ai regardé.
Compter le nombre de caractères, c'est malin !
Malheureusement, j'ai choisi de présenté mon problème avec des lettres
(1 lettre pour le niveau 1, 2 pour le niveau 2, etc.). J'aurai du
préciser que c'était pour l'exemple, et que le champs C2 contient du
texte de longueur variable (des mots et des noms).
Je ne vois pas comment adapter ta solution.
Pour Fabien : J'ai regardé. Compter le nombre de caractères, c'est malin ! Malheureusement, j'ai choisi de présenté mon problème avec des lettres (1 lettre pour le niveau 1, 2 pour le niveau 2, etc.). J'aurai du préciser que c'était pour l'exemple, et que le champs C2 contient du texte de longueur variable (des mots et des noms). Je ne vois pas comment adapter ta solution.
Fabien
Pour Fabien : J'ai regardé. Compter le nombre de caractères, c'est malin ! Malheureusement, j'ai choisi de présenté mon problème avec des lettres (1 lettre pour le niveau 1, 2 pour le niveau 2, etc.). J'aurai du préciser que c'était pour l'exemple, et que le champs C2 contient du texte de longueur variable (des mots et des noms). Je ne vois pas comment adapter ta solution.
Ben cà ;-)
Je fais avec les données lol Dommage j'aimais bien ma solution ;-) OK je reviens demain. Si y a pas de solution je replancherais sur le sujet Bonne aprés midi
Pour Fabien :
J'ai regardé.
Compter le nombre de caractères, c'est malin !
Malheureusement, j'ai choisi de présenté mon problème avec des lettres
(1 lettre pour le niveau 1, 2 pour le niveau 2, etc.). J'aurai du
préciser que c'était pour l'exemple, et que le champs C2 contient du
texte de longueur variable (des mots et des noms).
Je ne vois pas comment adapter ta solution.
Ben cà ;-)
Je fais avec les données lol
Dommage j'aimais bien ma solution ;-)
OK je reviens demain.
Si y a pas de solution je replancherais sur le sujet
Bonne aprés midi
Pour Fabien : J'ai regardé. Compter le nombre de caractères, c'est malin ! Malheureusement, j'ai choisi de présenté mon problème avec des lettres (1 lettre pour le niveau 1, 2 pour le niveau 2, etc.). J'aurai du préciser que c'était pour l'exemple, et que le champs C2 contient du texte de longueur variable (des mots et des noms). Je ne vois pas comment adapter ta solution.
Ben cà ;-)
Je fais avec les données lol Dommage j'aimais bien ma solution ;-) OK je reviens demain. Si y a pas de solution je replancherais sur le sujet Bonne aprés midi
Richard_35
Re,
OK. L'algorithme devrait être le suivant (sans le test EOF et en français) :
Lecture d'un enreg. par la clé C1 Lecture d'un enreg. par la clé C3 avec C3Á Lecture d'un enreg. par la clé C3 avec C3Á ... 13 fois avec stockage des info trouvées à chaque niveau Lecture prochain enreg. Lecture prochain enreg. Lecture prochain enreg.
Je ne connais pas VBA, mais Fabien maîtrise, visiblement : ce sera un jeu d'enfant pour lui de codifier tout ça (si possible) !
Bon courage et dis-nous, Richard?
"moromain" a écrit dans le message de news:
Pour Richard : Oui c'est une nomenclature. Non, un fils n'a qu'un père, et un père peut avoir plusieurs fils.
Pour Fabien : Je regarde ça.
Re,
OK.
L'algorithme devrait être le suivant (sans le test EOF et en français) :
Lecture d'un enreg. par la clé C1
Lecture d'un enreg. par la clé C3 avec C3Á
Lecture d'un enreg. par la clé C3 avec C3Á
... 13 fois avec stockage des info trouvées à chaque niveau
Lecture prochain enreg.
Lecture prochain enreg.
Lecture prochain enreg.
Je ne connais pas VBA, mais Fabien maîtrise, visiblement : ce sera un jeu
d'enfant pour lui de codifier tout ça (si possible) !
Bon courage et dis-nous,
Richard?
"moromain" <rm.acwed@gmail.com> a écrit dans le message de news:
1184923101.999084.288640@d55g2000hsg.googlegroups.com...
Pour Richard :
Oui c'est une nomenclature.
Non, un fils n'a qu'un père, et un père peut avoir plusieurs fils.
OK. L'algorithme devrait être le suivant (sans le test EOF et en français) :
Lecture d'un enreg. par la clé C1 Lecture d'un enreg. par la clé C3 avec C3Á Lecture d'un enreg. par la clé C3 avec C3Á ... 13 fois avec stockage des info trouvées à chaque niveau Lecture prochain enreg. Lecture prochain enreg. Lecture prochain enreg.
Je ne connais pas VBA, mais Fabien maîtrise, visiblement : ce sera un jeu d'enfant pour lui de codifier tout ça (si possible) !
Bon courage et dis-nous, Richard?
"moromain" a écrit dans le message de news:
Pour Richard : Oui c'est une nomenclature. Non, un fils n'a qu'un père, et un père peut avoir plusieurs fils.
Pour Fabien : Je regarde ça.
moromain
Je pensais justement à une solution de ce type. Par contre, on peut pas dire que ce soit une solution légère ! Je vais tester une programmation.
Je pensais justement à une solution de ce type.
Par contre, on peut pas dire que ce soit une solution légère !
Je vais tester une programmation.
Je pensais justement à une solution de ce type. Par contre, on peut pas dire que ce soit une solution légère ! Je vais tester une programmation.
Richard_35
Re,
Le déroulement d'une nomenclature dans un fichier "à plat" ne peut pas se résoudre par une requête simple.
Bon courage et donnes-nous un retour, Richard.
"moromain" a écrit dans le message de news:
Je pensais justement à une solution de ce type. Par contre, on peut pas dire que ce soit une solution légère ! Je vais tester une programmation.
Re,
Le déroulement d'une nomenclature dans un fichier "à plat" ne peut pas se
résoudre par une requête simple.
Bon courage et donnes-nous un retour,
Richard.
"moromain" <rm.acwed@gmail.com> a écrit dans le message de news:
1184938612.752506.196860@57g2000hsv.googlegroups.com...
Je pensais justement à une solution de ce type.
Par contre, on peut pas dire que ce soit une solution légère !
Je vais tester une programmation.