Bonjour à tous,
Je fais appel à vous encore une fois car je suis totalement perdu.
Je m'explique, j'ai une base de données et je voudrais charger une table sous forme de treeview en ADO. Mais ça coince ! Je n'y arrive pas du tout.
Voici ma table au format access:
IdCategorie (numérique)
NomCategorie (texte)
AnnotationCategorie (memo)
ParentCategorie (numérique) 'indique l'Id de la catégorie Parent (-1 si pas de parent)
NiveauCategorie (numérique) 'indique le niveau (1 puis 2 puis 3....)
J'ai commencé à coder ça mais je ne sais pas comment m'y prendre. La récursivité et moi ça fait 2 on dirait![]()
Merci beaucoup pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim i As Integer Dim NiveauMaximum As Integer 'connexion à la base de données db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & My.Application.Info.DirectoryPath & "\Database\documentalis.mdb" & ";User Id=admin;Password=;" db.Open() rs.Open("SELECT NiveauCategorie FROM T_Categorie", db, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic) NiveauMaximum = 0 While Not rs.EOF If (NiveauMaximum < rs.Fields(0).Value) Then NiveauMaximum = rs.Fields(0).Value rs.MoveNext() End While 'NiveauMaximum contient le plus grand niveau rs.Close() rs.Open("SELECT * FROM T_Categorie WHERE NiveauCategorie=1", db, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic) Dim tvRoot As TreeNode Dim tvNode As TreeNode Dim strNomCategorie As String = "" Dim intIdCategorie As Integer tvRoot = Me.TreeView1.Nodes.Add("Catégories") While Not rs.EOF 'chargement des catégories intIdCategorie = rs.Fields(0).Value 'récup de l'id de la catégorie strNomCategorie = rs.Fields(1).Value 'récup du nom de la catégorie tvNode = tvRoot.Nodes.Add(strNomCategorie) 'Ajout du nom de la catégorie For i = 2 To NiveauMaximum rs2.Open("SELECT * FROM T_Categorie WHERE NiveauCategorie=" & i & " AND ParentCategorie=" & intIdCategorie, db, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic) rs2.Close() Next rs.MoveNext() 'on passe à l'enregistrement suivant End While rs.Close() End Sub
Ludo
Partager