Structure dans collection

Résolu
Ephebe24 Messages postés 14 Date d'inscription vendredi 15 février 2008 Statut Membre Dernière intervention 28 février 2011 - 20 janv. 2010 à 12:23
Ephebe24 Messages postés 14 Date d'inscription vendredi 15 février 2008 Statut Membre Dernière intervention 28 février 2011 - 20 janv. 2010 à 17:56
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

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 janv. 2010 à 13:13
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]
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 janv. 2010 à 17:35
woups

Public Class Eleve
Public Nom As String
Public Prenom As String
End Class
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 janv. 2010 à 12:37
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)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 janv. 2010 à 12:40
PS : C'est quoi "H" ? --> Collection_Eleves, non ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ephebe24 Messages postés 14 Date d'inscription vendredi 15 février 2008 Statut Membre Dernière intervention 28 février 2011
20 janv. 2010 à 15:32
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...
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 janv. 2010 à 15:46
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

++
0
Ephebe24 Messages postés 14 Date d'inscription vendredi 15 février 2008 Statut Membre Dernière intervention 28 février 2011
20 janv. 2010 à 16:20
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'.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 janv. 2010 à 16:37
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
0
Ephebe24 Messages postés 14 Date d'inscription vendredi 15 février 2008 Statut Membre Dernière intervention 28 février 2011
20 janv. 2010 à 16:53
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...
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 janv. 2010 à 17:05
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
0
Ephebe24 Messages postés 14 Date d'inscription vendredi 15 février 2008 Statut Membre Dernière intervention 28 février 2011
20 janv. 2010 à 17:19
Désolé, j'ai toujours la même erreur...
0
Ephebe24 Messages postés 14 Date d'inscription vendredi 15 février 2008 Statut Membre Dernière intervention 28 février 2011
20 janv. 2010 à 17:56
Yes...

Merci beaucoup.
0
Rejoignez-nous