IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Recuperer text treeview pour ecriture dans table SQL


Sujet :

VB.NET

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Ouvrier en atelier
    Inscrit en
    Avril 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ouvrier en atelier
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2020
    Messages : 2
    Par défaut Recuperer text treeview pour ecriture dans table SQL
    Bonjour a tous,

    Je développe une appli pour les collègues dans l'atelier.

    C'est une appli qui servira, à terme, a générer une liste outils Excel ou PDF via la saisie des opérateurs.

    Pour cela j'utilise un treeview pour faciliter la lecture de l'opérateur.

    Je voudrais récupérer les infos que l'operateur a saisie et les copier dans une table du serveur SQL.

    Et c'est a se moment la que je butte.

    J'ai trouver une méthode pour réaliser cette sauvegarde, mais elle me sort une erreur et je ne vois pas comment la résoudre (il faut rappeler que je suis un débutant et que c'est mon 1er programme).

    Voici la méthode en question :

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Private Sub BT_Enregistrer_Click(sender As Object, e As EventArgs) Handles BT_Enregistrer.Click
     
            Call Savetotable()
     
        End Sub
        Private Sub PrintRecursive(ByVal n As TreeNode)
            System.Diagnostics.Debug.WriteLine(n.Text)
            MessageBox.Show(n.Text)
            Dim aNode As TreeNode
            For Each aNode In n.Nodes
                PrintRecursive(aNode)
            Next
        End Sub
     
        Private Sub CallRecursive(ByVal aTreeView As TreeView)
            Dim n As TreeNode
            For Each n In aTreeView.Nodes
                PrintRecursive(n)
            Next
        End Sub
     
        Private Sub Savetotable()
     
            'id  int identity(1,1)not null unique,
            'id_groh  int not null primary key,
            'parent  nvarchar(50)null,
            'child  nvarchar(50)null,
            'id_kala  nvarchar(15) not null,
            'sharh_kala  nvarchar(100) not null
     
            Dim SQL As String = "INSERT INTO tarif_groh_kala (id_groh, parent, child, id_kala, sharh_kala) VALUES ('@id_groh', '@parent', '@child', '@id_kala', '@sharh_kala')"
     
            Dim myConn = New SqlConnection("Initial Catalog=Liste Outils;" & "Data Source=NOTEBOOK\TEW_SQLEXPRESS;Integrated Security=SSPI;")
            'Open the connection.
            myConn.Open()
     
     
            Dim cmd As SqlCommand = New SqlCommand(SQL, myConn)
            cmd.Parameters.Add("@id_groh", SqlDbType.Int)
            cmd.Parameters.Add("@parent", SqlDbType.NVarChar)
            cmd.Parameters.Add("@child", SqlDbType.NVarChar)
            cmd.Parameters.Add("@id_kala", SqlDbType.NVarChar)
            cmd.Parameters.Add("@sharh_kala", SqlDbType.NVarChar)
     
     
            Call CallRecursive(TV)
     
            Dim nodeNumber As Integer = 1
            For Each node As TreeNode In TV.Nodes
                Dim itemNumber As Integer = 0
                For Each item As TreeNodeCollection In node.Nodes
                    cmd.Parameters("@id_groh").Value = nodeNumber + itemNumber
                    cmd.Parameters("@parent").Value = node.Parent.Name
                    cmd.Parameters("@child").Value = node.Name
                    cmd.Parameters("@id_kala").Value = item("id_kala").Name
                    cmd.Parameters("@sharh_kala").Value = item("sharh_kala").Name
                    cmd.ExecuteNonQuery()
     
                    itemNumber += 1
                Next
                nodeNumber += 1
            Next node
     
            cmd.Dispose()
            myConn.Close()
            myConn.Dispose()
     
        End Sub
    et Voila l'erreur que cela me mets :

    Nom : Capture.jpg
Affichages : 275
Taille : 379,3 Ko

    Si l'un d'entre vous à une solution…

    Merci d'avance de vos réponse.

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    La procédure CallRecursive(ByVal aTreeView As TreeView) est-elle bien nécessaire ?
    Je ne crois pas qu'il faille appeler PrintRecursive autant de fois qu'il y a de nœuds. L'appeler une seule fois en lui passant la racine de l'arbre est suffisant pour que le parcourt de l'arbre entier soit réalisé.

    J'espère que cette remarque t'aidera ...

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Ouvrier en atelier
    Inscrit en
    Avril 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ouvrier en atelier
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2020
    Messages : 2
    Par défaut
    Merci pour l'info, mais étant débutant je ne vois pas comment parcourir le treeview et ainsi pouvoir récupérer les infos de celui ci. J'ai fouiller un peu partout sur le net et je n'arrive pas a savoir comment parcourir mon treeview, qui pour info n'a jamais le même nombre d'enfant ni de petit enfant.

    La méthode "Printrecursive" que j'ai trouvé sur le net parcours bien tout mon treeview (j'arrive a lire chaque élément du treeview via un messagebox)

    Mais comment réussir a ranger dans une table toute les infos de celui ci ?

    N'ayant aucune formation et ne connaissant pas clairement toute les méthodes je ne vous cache pas que j'ai beaucoup de mal à comprendre comment celui peut fonctionner.


    Voila a quoi ressemble mon programme pour que vous voyez comment je rempli mon treeview

    Nom : Capture.jpg
Affichages : 253
Taille : 305,8 Ko

    Comme vous pouvez le voir il faudrait que je puisse récupérer tout ce que contient chaque enfant du O1000 et ainsi l'écrire dans chaque ligne de ma base de donnée.

    Donc si une âme charitable pourrait m'aiguiller vers une méthode qui pourrait me faire avancer, je l'en remercie.

  4. #4
    Membre éclairé Avatar de Sam Placi
    Homme Profil pro
    Développeur occasionnel
    Inscrit en
    Octobre 2019
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur occasionnel

    Informations forums :
    Inscription : Octobre 2019
    Messages : 68
    Par défaut
    Bonjour,

    Ta procédure PrintRecursive est parfaite si le but est d'afficher tous les noeuds avec MessageBox (et dans la fenêtre du débogueur).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Private Sub PrintRecursive(ByVal n As TreeNode)
            System.Diagnostics.Debug.WriteLine(n.Text)
            MessageBox.Show(n.Text)
            Dim aNode As TreeNode
            For Each aNode In n.Nodes
                PrintRecursive(aNode)
            Next
        End Sub
    Mais, comme te l'as signalé Phil Rob, il ne faut pas l'appeler dans une boucle. Il faut l'appeler UNE SEULE FOIS.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        Private Sub CallRecursive(ByVal aTreeView As TreeView)
        '***    Dim n As TreeNode
         '***   For Each n In aTreeView.Nodes
                PrintRecursive(aTreeView)
          '***  Next
        End Sub
    Cela devrait fonctionner.

    Cdt,

    Sam

Discussions similaires

  1. Problème pour insertion dans tables avec jointure
    Par C3DRIC49 dans le forum Langage
    Réponses: 8
    Dernier message: 15/10/2010, 21h52
  2. C# - Valeur d'une textbox dans table SQL
    Par jerome1357 dans le forum C#
    Réponses: 2
    Dernier message: 04/07/2008, 16h47
  3. Besoin d'aide pour parcours de table SQL Server
    Par Monkey_D.Luffy dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 09/06/2008, 09h40
  4. Transfert DataTable dans Table SQL SERVER
    Par crapouye dans le forum ASP.NET
    Réponses: 6
    Dernier message: 01/02/2008, 17h03
  5. Insertion dans table SQL server (Trigger) Aidz moi SVP????
    Par pop bob dans le forum Développement
    Réponses: 2
    Dernier message: 30/07/2005, 23h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo