Structure dans collection

Résolu
Signaler
Messages postés
14
Date d'inscription
vendredi 15 février 2008
Statut
Membre
Dernière intervention
28 février 2011
-
Messages postés
14
Date d'inscription
vendredi 15 février 2008
Statut
Membre
Dernière intervention
28 février 2011
-
Bonjour à tous

Voila le problème en vb.net. Je défini une structure "Eleve", puis je la place dans une collection "Collection_Eleves" (voir code ci dessous)

Private Structure Eleve
    Dim Nom As String
    Dim Prenom As String
    Dim Classe As String
    Dim Date_Naiss As String
    Dim Sexe As String
End Structure

Dim Collection_Eleves As New Dictionary(Of Integer, Eleve)
Dim Stuc_Eleve As Eleve
Dim Noms As String

With Stuc_Eleve
      .Nom = "Nom1"
      .Prenom = "Prenom1"
      .Classe = "Classe1"
      .Sexe = "M"
      .Date_Naiss = "Date1"
End With

H.Add(1, Stuc_Eleve)

Noms = H(1).Nom ‘Récupération d’une valeur de structure se trouvant dans une collection


Jusqu’ici ça marche…

Mais comment affecter la valeur " toto " dans une structure se trouvant dans une collection ?

Par exemple " qui ne marche pas "

H(1).Nom = "toto"

Merci

12 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
48
salut,

ouhlala mais c'est quoi cette tentative?...

tu veux faire quoi exactement?

une structure n'est pas instanciable donc il n'est pas logique de la mettre dans une "liste", donc pas non plus dans un dictionnaire

transforme ta structure eleve en classe eleve
tranforme ton dictionnaire en new list(of eleve) (nommée eleves par exemple)


eleves.add(new eleve with {.Nom "Nom1", .Prenom "Prenom1", .Classe = "Classe1", .Sexe = "M", .Date_Naiss = "Date1"})


dim nom1 as string = eleves.item(0).Nom


++
[hr]
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
48
woups

Public Class Eleve
Public Nom As String
Public Prenom As String
End Class
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
"Ca ne marche pas" ne voulant rien dire, quelle erreur as-tu en utilisant cette syntaxe ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
PS : C'est quoi "H" ? --> Collection_Eleves, non ?
Messages postés
14
Date d'inscription
vendredi 15 février 2008
Statut
Membre
Dernière intervention
28 février 2011

Bien...

Explication :
Je souhaite récupérer des données dans un fichier XML, pour les enregistrer dans une base de données WAMPSERVER
La structure du fichier XML comporte plusieurs nœuds comme <DONNEES> et <STRUCTURE>

A l'intérieur de la balise <DONNEES> il y a des infos avec notamment un Id_Eleve

<ELEVE ELEVE_ID="173622" ELENOET="5249">


A l'intérieur de la balise <STRUCTURE> il y a également des infos qui sont reliées aux <DONNEES> par ce même Id_Eleve.

Je compte récupérer les infos en bouclant dans un premier temps sur le noeud <DONNEES> et en les stockant dans une "structure" , MAIS dans un deuxième temps, lors de ma deuxième boucle sur le noeud <STRUCTURES> je souhaite pouvoir introduire directement dans ma "structure" les infos qui sont liées par l'Id_Eleve.

d'où cette tentative de débutant de mettre les infos dans une "structure" et d'indexer celle-ci dans une "liste", avec comme index "Id_Eleve"...

J'espère avoir été assez claire...

Merci pour votre aide...
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
48
si tu boucles pour mettre dans une table mysql, pas forcément besoin de passer par une liste (tout court)

mais sinon dans ce cas ma précédente réponse devrait correspondre

++
Messages postés
14
Date d'inscription
vendredi 15 février 2008
Statut
Membre
Dernière intervention
28 février 2011

J'ai essayé oui... mais...

Déclaration:
Public Class Eleve
     Dim Nom As String
     Dim Prenom As String
     Dim Classe As String
     Dim Date_Naiss As String
     Dim Sexe As String
End Class


Public Function:
Dim eleves As New List(Of Eleve)

eleves.Add(New Eleve With {.Nom "Nom1", .Prenom "Prenom1", .Classe = "Classe1", .Sexe = "M", .Date_Naiss = "Date1"})


et ...

Erreur	1 'Eleve.Nom' n'est pas accessible dans ce contexte, car il est 'Private'.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
48
il doit y avoir un conflit de nom, tu n'as peut-être pas supprimé le code de ta structure (même nom, private)

au pire fait des tests dans un autre projet, qu'on ait pas d'erreurs que tu serais la seule à pouvoir voir
Messages postés
14
Date d'inscription
vendredi 15 février 2008
Statut
Membre
Dernière intervention
28 février 2011

J'ai déjà essayé, sur un projet tous neuf de chez neuf...

Public Class Form1

    Public Class Eleve
        Dim Nom As String
        Dim Prenom As String
    End Class

   
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim eleves As New List(Of Eleve)
        eleves.Add(New Eleve With {.Nom "Nom1", .Prenom "Prenom1"})

    End Sub
End Class


Même problème...
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
48
2 classes dans un fichiers oui
1 classe dans une classe, non


Public Class Eleve
    Dim Nom As String
    Dim Prenom As String
End Class


Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim eleves As New List(Of Eleve)
        eleves.Add(New Eleve With {.Nom "Nom1", .Prenom "Prenom1"})

    End Sub
End Class
Messages postés
14
Date d'inscription
vendredi 15 février 2008
Statut
Membre
Dernière intervention
28 février 2011

Désolé, j'ai toujours la même erreur...
Messages postés
14
Date d'inscription
vendredi 15 février 2008
Statut
Membre
Dernière intervention
28 février 2011

Yes...

Merci beaucoup.