Eureka !
J'ai trouvé. J'ai fait une requête dans laquelle les 13 champs sont
sélectionnés par une fonction.
Ca marche mais c'est très lourd, donc lent...
Je vous la présenterai demain...
Eureka !
J'ai trouvé. J'ai fait une requête dans laquelle les 13 champs sont
sélectionnés par une fonction.
Ca marche mais c'est très lourd, donc lent...
Je vous la présenterai demain...
Eureka !
J'ai trouvé. J'ai fait une requête dans laquelle les 13 champs sont
sélectionnés par une fonction.
Ca marche mais c'est très lourd, donc lent...
Je vous la présenterai demain...
on recherche les niveaux "père".
Là je comprends pas !A quoi correspondent les Nx.Cy ???
on recherche les niveaux "père".
Là je comprends pas !A quoi correspondent les Nx.Cy ???
on recherche les niveaux "père".
Là je comprends pas !A quoi correspondent les Nx.Cy ???
Pour Michel_D :
Ca marche ! C'est plus simple que ma solution.
Je vais regarder pour la transposer avec 13 champs.
Merci en tout cas !
Ma solution :
Dans ma base, j'ai un champs dans lequel j'indique le niveau
hiérarchique de chaque enregistrement (j'ai mis des code en lettres).
Appelons-le champs C4.
J'ai créé une requête, avec un champs par niveau hiérarchique, plus un
dernier contenant le champs C1 (j'ai donc 14 champs).
Chaque champs est rempli par une fonction :
NiveauHierarchique1: TrouveNiveauhierarchique([C1];"CodeNiveau"), où
CodeNiveau correspond au code entré en C4.
Et la fonction :
Function CodeRequete(Insert As Double) As String
CodeRequete = "SELECT C1, C2, C3, C4 from maTable WHERE
((maTable.C1)="
CodeRequete = CodeRequete & Insert
CodeRequete = CodeRequete & ");"
End Function
Function TrouveNiveauhierarchique(NumEnrg As Double,
NiveauHierarchique As String) As String
Dim Continuer As Boolean
Dim rs As DAO.Recordset
Dim dbs As Database
Dim CodeNiveau, VieuxCodeNiveau As String
Set dbs = CurrentDb
Set rs = dbs.OpenRecordset(CodeRequete(NumEnrg))
CodeNiveau = rs!Code_Niveau
VieuxCodeNiveau = CodeNiveau
TrouveNiveauhierarchique= rs!C2 'Cas pour le niveau "0"
Continuer = True
If CodeNiveau = NiveauHierarchique Then Continuer = False
While Continuer = True
If IsNull(rs!C3) Then
TrouveNiveauhierarchique = ""
Continuer = False
Else
NumEnrg = rs!C3
Set rs = dbs.OpenRecordset(CodeRequete(NumEnrg))
CodeNiveau = rs!Code_Niveau
TrouveNiveauhierarchique = rs!C2
End If
If CodeNiveau = Niveauhierarchique Then Continuer = False
Wend
rs.Close
dbs.Close
End Function
L'opération est longue (j'ai 3700 enregistrements !). La solution de
Michel est quasiment instantanée, contrairement à la mienne !
Pour Michel_D :
Ca marche ! C'est plus simple que ma solution.
Je vais regarder pour la transposer avec 13 champs.
Merci en tout cas !
Ma solution :
Dans ma base, j'ai un champs dans lequel j'indique le niveau
hiérarchique de chaque enregistrement (j'ai mis des code en lettres).
Appelons-le champs C4.
J'ai créé une requête, avec un champs par niveau hiérarchique, plus un
dernier contenant le champs C1 (j'ai donc 14 champs).
Chaque champs est rempli par une fonction :
NiveauHierarchique1: TrouveNiveauhierarchique([C1];"CodeNiveau"), où
CodeNiveau correspond au code entré en C4.
Et la fonction :
Function CodeRequete(Insert As Double) As String
CodeRequete = "SELECT C1, C2, C3, C4 from maTable WHERE
((maTable.C1)="
CodeRequete = CodeRequete & Insert
CodeRequete = CodeRequete & ");"
End Function
Function TrouveNiveauhierarchique(NumEnrg As Double,
NiveauHierarchique As String) As String
Dim Continuer As Boolean
Dim rs As DAO.Recordset
Dim dbs As Database
Dim CodeNiveau, VieuxCodeNiveau As String
Set dbs = CurrentDb
Set rs = dbs.OpenRecordset(CodeRequete(NumEnrg))
CodeNiveau = rs!Code_Niveau
VieuxCodeNiveau = CodeNiveau
TrouveNiveauhierarchique= rs!C2 'Cas pour le niveau "0"
Continuer = True
If CodeNiveau = NiveauHierarchique Then Continuer = False
While Continuer = True
If IsNull(rs!C3) Then
TrouveNiveauhierarchique = ""
Continuer = False
Else
NumEnrg = rs!C3
Set rs = dbs.OpenRecordset(CodeRequete(NumEnrg))
CodeNiveau = rs!Code_Niveau
TrouveNiveauhierarchique = rs!C2
End If
If CodeNiveau = Niveauhierarchique Then Continuer = False
Wend
rs.Close
dbs.Close
End Function
L'opération est longue (j'ai 3700 enregistrements !). La solution de
Michel est quasiment instantanée, contrairement à la mienne !
Pour Michel_D :
Ca marche ! C'est plus simple que ma solution.
Je vais regarder pour la transposer avec 13 champs.
Merci en tout cas !
Ma solution :
Dans ma base, j'ai un champs dans lequel j'indique le niveau
hiérarchique de chaque enregistrement (j'ai mis des code en lettres).
Appelons-le champs C4.
J'ai créé une requête, avec un champs par niveau hiérarchique, plus un
dernier contenant le champs C1 (j'ai donc 14 champs).
Chaque champs est rempli par une fonction :
NiveauHierarchique1: TrouveNiveauhierarchique([C1];"CodeNiveau"), où
CodeNiveau correspond au code entré en C4.
Et la fonction :
Function CodeRequete(Insert As Double) As String
CodeRequete = "SELECT C1, C2, C3, C4 from maTable WHERE
((maTable.C1)="
CodeRequete = CodeRequete & Insert
CodeRequete = CodeRequete & ");"
End Function
Function TrouveNiveauhierarchique(NumEnrg As Double,
NiveauHierarchique As String) As String
Dim Continuer As Boolean
Dim rs As DAO.Recordset
Dim dbs As Database
Dim CodeNiveau, VieuxCodeNiveau As String
Set dbs = CurrentDb
Set rs = dbs.OpenRecordset(CodeRequete(NumEnrg))
CodeNiveau = rs!Code_Niveau
VieuxCodeNiveau = CodeNiveau
TrouveNiveauhierarchique= rs!C2 'Cas pour le niveau "0"
Continuer = True
If CodeNiveau = NiveauHierarchique Then Continuer = False
While Continuer = True
If IsNull(rs!C3) Then
TrouveNiveauhierarchique = ""
Continuer = False
Else
NumEnrg = rs!C3
Set rs = dbs.OpenRecordset(CodeRequete(NumEnrg))
CodeNiveau = rs!Code_Niveau
TrouveNiveauhierarchique = rs!C2
End If
If CodeNiveau = Niveauhierarchique Then Continuer = False
Wend
rs.Close
dbs.Close
End Function
L'opération est longue (j'ai 3700 enregistrements !). La solution de
Michel est quasiment instantanée, contrairement à la mienne !
on recherche les niveaux "père".
Là je comprends pas !A quoi correspondent les Nx.Cy ???
on recherche les niveaux "père".
Là je comprends pas !A quoi correspondent les Nx.Cy ???
on recherche les niveaux "père".
Là je comprends pas !A quoi correspondent les Nx.Cy ???
on recherche les niveaux "père".
Là je comprends pas !A quoi correspondent les Nx.Cy ???
on recherche les niveaux "père".
Là je comprends pas !A quoi correspondent les Nx.Cy ???
on recherche les niveaux "père".
Là je comprends pas !A quoi correspondent les Nx.Cy ???