Bonjour,

J'ai construit un treeview avec les données d'une base de données.
Il se trouve que je veux permettre à un utilisateur de copier un noeud avec tous ses enfants à l'endroit qu'il aura choisi dans le thésaurus.

pour l'instant je parviens à copier le neoud lui même à un autre endroit du thésaurus mais pas ses enfants avec lui.
Pouvez vous m'aide=r sur ce point car je butte là dessus depuis trop longtmeps et n'ai ps obtenu de résulta satisfaisant pour l'instant.

La table GENERIQUES contient les trois champs : id_terme_source_g ( champ enfant) et id_terme_generique-(champ parent) et tv_loc qui indique l'index du terme c'est à dire sa position dans le treeview.



la table TERMES contient tous les termes .

voici le code utilisé jusqu'à maintenant

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

objDS.Tables("TERMES").Clear()
                objDA = New SqlDataAdapter(strSQLTERMES, objConn)
                objDA.Fill(objDS, "TERMES")
n=TreeView1.Nodes.add(strlibelle)
strlibelle est le libellé du terme saisi par l'utilisateur dans un input box
Dim termeexiste as boolean

For Each drTerme In objDS.Tables("TERMES").Rows'on suppose ici que la compparaison entre les deux termes a donné un resultat positif et on en arrive à termeexiste=true
                                                          
 termeexiste = True
                        ' si l'utilisateur dit qu'il souhaite réutiliser le même terme, alors ajouter ce terme avec tous ses spécifiques, en fait créer une nouvelle relation générique/spécifique avec comme générique le nouveau terme situé au-dessus dans l'arborescence
                        ident_terme_source_g = CType(drTerme.Item("ID_TERME"), Integer)

                       
                        If MessageBox.Show("Ce terme existe déjà dans la base de données, voulez-vous l'insérer à cet endroit à nouveau avec tous ses termes spécifiques?", "Ajout d'un nouveau terme", MessageBoxButtons.YesNoCancel) = DialogResult.Yes Then

                            'Avant tout nous devons augmenter de 1 la valeur de TV_LOC1 comme nous l'avons fait pour TV_LOC( je ne vous explique pas le détail mais c'est ainsi qu'on procède)
                            Dim tmpSQLCommand As String
                            Dim tmpResetTV_LOC1 As SqlCommand
                            tmpSQLCommand = "UPDATE GENERIQUES SET TV_LOC1 = TV_LOC1 + 1 WHERE ID_TERME_GENERIQUE = " & iParentID.ToString & " AND TV_LOC1 >= " & n.Index.ToString

                            tmpResetTV_LOC1 = New SqlCommand(tmpSQLCommand, objConn)
                            'on ouvre la connexion                            objConn.Open()
                            tmpResetTV_LOC1.ExecuteNonQuery()
                            tmpResetTV_LOC1.Dispose()


                            ' Mettons à jour la table des Generiques
                            strSQLInsertGeneriqueTermerepete = "INSERT INTO GENERIQUES( ID_TERME_SOURCE_G , ID_TERME_GENERIQUE, TV_LOC1 ) VALUES( " + ident_terme_source_g.ToString + " , " + iParentID.ToString + " , " & n.Index.ToString & " )"                            objinsertgeneriquetermerepete = New SqlCommand(strSQLInsertGeneriqueTermerepete, objConn)
                            objinsertgeneriquetermerepete.ExecuteNonQuery()
                            'on ferme la connexion
                            objConn.Close()


                            Exit For
                        Else 'si l'utilisateur a cliqué sur les touches 'annuler ' ou 'non' 

                            Exit Sub
                        End If 'fin de If MessageBox.Show("Ce terme existe déjà dans la base de données, voulez-vous l'insérer à cet endroit à nouveau avec tous ses termes spécifiques?", "Ajout d'un nouveau terme", MessageBoxButtons.YesNoCancel) = DialogResult.Yes Then


                    End If 'fin de If strLibelle.ToLower = CType(drTerme.Item("Lib_TERME"), String)
Je vous remercie beaucoup de votre aide.
Cordialement.
Natahlie