begin process at 2012 02 17 02:42:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Divers

 > 

Débutants

 > 

parcourir une collection pour ecriture/lecture/modification


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

parcourir une collection pour ecriture/lecture/modification

jeudi 2 juillet 2009 à 15:18:10 | parcourir une collection pour ecriture/lecture/modification

megamario

Bonjour

Je recherche la possibilité de stocker dans une collection 9 données par ajout

Pour le moment j'essaie une Hashtable en passant pas un Objet aillant les 9 données.
Cela marche. je vois les données mais j'arrive pas a trouver le moyen d'y accéder par le code.

Pour lire les données je fait:

La classe Items:
*********************************************************
Public Class Items
#Region "Champs privés"
    Private _Nom As String
    Private _Type As String
    Private _Obj As String
    Private _Ind As String
    Private _Format As Double
    Private _Unit As String
    Private _Selection As Boolean
    Private _SelectInter As Boolean
    Private _SeuilInter As Double
#End Region
#Region "Constructeur"
    Sub New()
        _Nom = ""
        _Type = ""
        _Obj = ""
        _Ind = ""
        _Format = 0
        _Unit = ""
        _Selection = False
        _SelectInter = False
        _SeuilInter = 0
    End Sub
#End Region
#Region "Propriétés publiques"
    Property Nom() As String
        Get
            Return _Nom
        End Get
        Set(ByVal value As String)
            _Nom = value
        End Set
    End Property
    Property Type() As String
        Get
            Return _Type
        End Get
        Set(ByVal value As String)
            _Type = value
        End Set
    End Property
    Property Obj() As String
        Get
            Return _Obj
        End Get
        Set(ByVal value As String)
            _Obj = value
        End Set
    End Property
    Property Ind() As String
        Get
            Return _Ind
        End Get
        Set(ByVal value As String)
            _Ind = value
        End Set
    End Property
    Property Format() As Double
        Get
            Return _Format
        End Get
        Set(ByVal value As Double)
            _Format = value
        End Set
    End Property
    Property Unit() As String
        Get
            Return _Unit
        End Get
        Set(ByVal value As String)
            _Unit = value
        End Set
    End Property
    Property Selection() As Boolean
        Get
            Return _Selection
        End Get
        Set(ByVal value As Boolean)
            _Selection = value
        End Set
    End Property
    Property SelectInter() As Boolean
        Get
            Return _SelectInter
        End Get
        Set(ByVal value As Boolean)
            _SelectInter = value
        End Set
    End Property
    Property SeuilInter() As Double
        Get
            Return _SeuilInter
        End Get
        Set(ByVal value As Double)
            _SeuilInter = value
        End Set
    End Property
#End Region
End Class
******************************************************************
Ensuite je rempli ma Hashtable
******************************************************************
    Inherits Items
    Dim Doc As XmlDocument
    Dim ListXml As XmlNodeList

    Public Function Load() As CollectionXML
        Public Coll As Hashtable
        Coll = New Hashtable()
        'Dim Nom As String 'Type, Obj, Ind, Format, Unit, Selection, SelectInter, SeuilInter
        Dim Typ As XmlNode
        Dim Types As XmlNode
        Dim Items As XmlNode
        Doc = New Xml.XmlDocument
        Doc.Load("f:\essaie1.xml")
        ListXml = Doc.GetElementsByTagName("type")
        For Each Typ In ListXml
            If Typ.Attributes("version").Value = "ACM1000" Then
                For Each Types In Typ
                    Dim C As Items
                    If Types.LocalName = "mesures" Then
                        For Each Items In Types
                            C = New Items()
                            C.Nom = Items.SelectSingleNode("Nom").InnerText
                            C.Type = "mesure"
                            C.Obj = Items.SelectSingleNode("Obj").InnerText
                            C.Ind = Items.SelectSingleNode("Ind").InnerText
                            C.Format = Items.SelectSingleNode("Format").InnerText
                            C.Unit = Items.SelectSingleNode("Unit").InnerText
                            C.Selection = Items.SelectSingleNode("Selection").InnerText
                            C.SelectInter = Items.SelectSingleNode("SelectInter").InnerText
                            C.SeuilInter = Items.SelectSingleNode("SeuilInter").InnerText
                            Coll.Add(C.Nom, C)
                        Next
                    End If
                    If Types.LocalName = "entrees" Then
                        For Each Items In Types
                            C = New Items()
                            C.Nom = Items.SelectSingleNode("Nom").InnerText
                            C.Type = "entree"
                            C.Obj = Items.SelectSingleNode("Obj").InnerText
                            C.Ind = Items.SelectSingleNode("Ind").InnerText
                            C.Selection = Items.SelectSingleNode("Selection").InnerText
                            C.SelectInter = Items.SelectSingleNode("SelectInter").InnerText
                            Coll.Add(C.Nom, C)
                        Next
                    End If
                Next
            End If
        Next
    End Function
*************************************************************************
Par contre j'arrive pas a ressortir les valeurs
par exemple afficher: le Obj  du 1er Nom qui correspond a la key 0


Merci de votre aide


Technicien en électricité industriel. En cours de reconversion par un BTS IRIS 1er année.
Actuellement en stage dans mon entreprise en R&D.
jeudi 2 juillet 2009 à 17:11:08 | Re : parcourir une collection pour ecriture/lecture/modification

PCPT

Administrateur CodeS-SourceS
salut,

pas testé mais selon l'usage que tu savoir avoir besoin, autant retourner une list personnelle non?

voici ce que çà devrait donner :




'*********************************************************
'classe clsItem.vb
'*********************************************************
Public Class clsItem
#Region "Enum"
    Public Enum ModeConstants
        mcDefault = 0
        mcMesure = 1
        mcEntree = 2
    End Enum
#End Region
#Region "Propriétés"
    Public Nom As String
    Public Type As String
    Public Obj As String
    Public Ind As String
    Public Format As Double
    Public Unit As String
    Public Selection As Boolean
    Public SelectInter As Boolean
    Public SeuilInter As Double
#End Region

#Region "Constructeur"
    Public Sub New(ByVal eMode As ModeConstants, Optional ByRef oNode As System.Xml.XmlNode = Nothing)
        Me.Nom = String.Empty
        Me.Type = String.Empty
        Me.Obj = String.Empty
        Me.Ind = String.Empty
        Me.Format = 0.0#
        Me.Unit = String.Empty
        Me.Selection = False
        Me.SelectInter = False
        Me.SeuilInter = 0.0#

        If Not oNode Is Nothing Then
            Me.Nom = oNode.SelectSingleNode("Nom").InnerText
            Me.Obj = oNode.SelectSingleNode("Obj").InnerText
            Me.Ind = oNode.SelectSingleNode("Ind").InnerText
            Me.Selection = oNode.SelectSingleNode("Selection").InnerText
            Me.SelectInter = oNode.SelectSingleNode("SelectInter").InnerText

            If eMode = ModeConstants.mcMesure Then
                Me.Type = "mesure"
                Me.Format = oNode.SelectSingleNode("Format").InnerText
                Me.Unit = oNode.SelectSingleNode("Unit").InnerText
                Me.SeuilInter = oNode.SelectSingleNode("SeuilInter").InnerText
            ElseIf eMode = ModeConstants.mcEntree Then
                Me.Type = "entree"
            End If
        End If
    End Sub
#End Region

#Region "Fonctions"
    Public Overrides Function ToString() As String
        Return Me.Nom & Environment.NewLine & _
                Me.Type & Environment.NewLine & _
                Me.Obj & Environment.NewLine & _
                Me.Ind & Environment.NewLine & _
                Me.Format.ToString & Environment.NewLine & _
                Me.Unit & Environment.NewLine & _
                Me.Selection.ToString & Environment.NewLine & _
                Me.SelectInter.ToString & Environment.NewLine & _
                Me.SeuilInter.ToString
    End Function
#End Region
End Class
'*********************************************************





'*********************************************************
'classe clsXmlItems.vb
'*********************************************************
Public Class clsXmlItems
    Public Items As New List(Of clsItem)

    Public Sub New(ByVal sXmlPath As String)
        Dim oXmlDoc As New System.Xml.XmlDocument
        Dim oXmlNodes As System.Xml.XmlNodeList
        Dim oHT As New Hashtable
        Dim oXmlTypes As System.Xml.XmlNode
        Dim oXmlType As System.Xml.XmlNode
        Dim oXmlNode As System.Xml.XmlNode

        oXmlDoc.Load("sXmlPath")
        oXmlNodes = oXmlDoc.GetElementsByTagName("type")
        For Each oXmlTypes In oXmlNodes
            If oXmlTypes.Attributes("version").Value = "ACM1000" Then
                For Each oXmlType In oXmlTypes
                    If oXmlType.LocalName = "mesures" Then
                        For Each oXmlNode In oXmlType
                            Me.Items.Add(New clsItem(clsItem.ModeConstants.mcMesure, oXmlNode))
                        Next
                    ElseIf oXmlType.LocalName = "entrees" Then
                        For Each oXmlNode In oXmlType
                            Me.Items.Add(New clsItem(clsItem.ModeConstants.mcEntree, oXmlNode))
                        Next
                    End If
                Next
            End If
        Next

        'penser à fermer et vider les objet xml ici
    End Sub
End Class
'*********************************************************

Coloration syntaxique vb/vba/vb.net





tu as alors tes éléments ainsi :

        Dim x As New clsXmlItems("f:\essaie1.xml")
       
MessageBox.Show(x.Items(0).ToString)
       
MessageBox.Show(x.Items(1).ToString)


non?


vendredi 3 juillet 2009 à 07:45:03 | Re : parcourir une collection pour ecriture/lecture/modification

megamario

Merci pour pour ce code, je vais je tester. Je n'est pas pu voir sa avant j'avais plus d'internet hier.

Technicien en électricité industriel. En cours de reconversion par un BTS IRIS 1er année.
Actuellement en stage dans mon entreprise en R&D.
vendredi 3 juillet 2009 à 08:35:03 | Re : parcourir une collection pour ecriture/lecture/modification

megamario

Cela marche impeccable.
Par contre comment trier la liste obtenue?



Technicien en électricité industriel. En cours de reconversion par un BTS IRIS 1er année.
Actuellement en stage dans mon entreprise en R&D.
vendredi 3 juillet 2009 à 08:35:59 | Re : parcourir une collection pour ecriture/lecture/modification

megamario

Oupss j'oubliais, il faut que je puisse trier la liste de façon alphabétique par rapport au "nom"

Merci

Technicien en électricité industriel. En cours de reconversion par un BTS IRIS 1er année.
Actuellement en stage dans mon entreprise en R&D.
vendredi 3 juillet 2009 à 11:12:42 | Re : parcourir une collection pour ecriture/lecture/modification

PCPT

Administrateur CodeS-SourceS
voir l'aide sur x.items.sort
++

vendredi 3 juillet 2009 à 12:07:48 | Re : parcourir une collection pour ecriture/lecture/modification

PCPT

Administrateur CodeS-SourceS
après recherches (bin oui j'avoue, le SORT a titillé ma curiosité , surtout qu eje ne fais pas de dotnet....), il faut créer une interface de comparaison (ICOMPARE) pour choisir l'item de travail pour le sort

voici clsItem modifiée :

'*********************************************************
'classe clsItem.vb
'*********************************************************
Public Class clsItem
    Implements System.IComparable

#Region "Enum"
    Public Enum ModeConstants
        mcDefault = 0
        mcMesure = 1
        mcEntree = 2
    End Enum
#End Region
#Region "Propriétés"
    Public Nom As String
    Public Type As String
    Public Obj As String
    Public Ind As String
    Public Format As Double
    Public Unit As String
    Public Selection As Boolean
    Public SelectInter As Boolean
    Public SeuilInter As Double
#End Region

#Region "Constructeur"
    Public Sub New(ByVal eMode As ModeConstants, Optional ByRef oNode As System.Xml.XmlNode = Nothing)
        Me.Nom = String.Empty
        Me.Type = String.Empty
        Me.Obj = String.Empty
        Me.Ind = String.Empty
        Me.Format = 0.0#
        Me.Unit = String.Empty
        Me.Selection = False
        Me.SelectInter = False
        Me.SeuilInter = 0.0#

        If Not oNode Is Nothing Then
            Me.Nom = oNode.SelectSingleNode("Nom").InnerText
            Me.Obj = oNode.SelectSingleNode("Obj").InnerText
            Me.Ind = oNode.SelectSingleNode("Ind").InnerText
            Me.Selection = oNode.SelectSingleNode("Selection").InnerText
            Me.SelectInter = oNode.SelectSingleNode("SelectInter").InnerText

            If eMode = ModeConstants.mcMesure Then
                Me.Type = "mesure"
                Me.Format = oNode.SelectSingleNode("Format").InnerText
                Me.Unit = oNode.SelectSingleNode("Unit").InnerText
                Me.SeuilInter = oNode.SelectSingleNode("SeuilInter").InnerText
            ElseIf eMode = ModeConstants.mcEntree Then
                Me.Type = "entree"
            End If
        End If
    End Sub
#End Region

#Region "Fonctions"
    Public Overrides Function ToString() As String
        Return Me.Nom & Environment.NewLine & _
                Me.Type & Environment.NewLine & _
                Me.Obj & Environment.NewLine & _
                Me.Ind & Environment.NewLine & _
                Me.Format.ToString & Environment.NewLine & _
                Me.Unit & Environment.NewLine & _
                Me.Selection.ToString & Environment.NewLine & _
                Me.SelectInter.ToString & Environment.NewLine & _
                Me.SeuilInter.ToString
    End Function

    Public Function CompareTo(ByVal item As ObjectAs Integer Implements System.IComparable.CompareTo
        Return Me.Nom.CompareTo(CType(item, clsItem).Nom)
    End Function
#End Region
End Class
'*********************************************************
Coloration syntaxique vb/vba/vb.net



du coup, x.items.sort() fonctionne parfaitement
++

vendredi 3 juillet 2009 à 13:52:46 | Re : parcourir une collection pour ecriture/lecture/modification

megamario

Merci pour tout vos commentaires,
J'en prend note et ce que je viens de vous prendre marche bien

Merci

Technicien en électricité industriel. En cours de reconversion par un BTS IRIS 1er année.
Actuellement en stage dans mon entreprise en R&D.
vendredi 3 juillet 2009 à 14:09:25 | Re : parcourir une collection pour ecriture/lecture/modification

PCPT

Administrateur CodeS-SourceS
pense à valider la ou les bonnes réponses dans ce cas :)

çà n'a pas l'air dans tes habitudes, pourtant : règlement

On pense à laisser un petit message lorsqu'un problème est résolu et à cliquer sur le bouton «réponse acceptée».
Ce bouton sert à valider la ou les réponses qui conviennent au problème indiqué. Il sert aussi de remerciement pour les membres qui ont apporté la/les bonnes réponses. Enfin une réponse validée est bien plus facile à retrouver lors de recherches sur le forum. N'oubliez pas qu'un forum ne sert pas qu'à poser sa question!


++



Cette discussion est classée dans : end, get, value, property, items


Répondre à ce message

Sujets en rapport avec ce message

Création d'attributs sur controle [ par Emcy ] Bonjours, j'ai créer un composant à partir du controle Label. Je voudrais ajouter les propriétés Grid.X et Grid.YLe code ci-dessous fonctionne (j'arri property, évenement, ActiveX DLL [ par forum_ma ] Bonjour, Je sais que c'Est p-e ma 4e question sur les ActiveX et Property, mais j'ai presque compris la comment sa marche   Me reste juste 1 question un For Each que ne fonctionne pas avec une collection maison ! [ par EMMANUELTAVE ] bonsoir, Je transforme une application VB6 en VB2005 : Ouf je m'acroche !voici ma classe de base : rien de tres .....< Property [ par manu222 ] Bonjour,Voila je declare une Property ci-contre qui me retourne un status boolean ca marche tres bien...je voudrais la meme chose mais avec un Tableau Sérialiser un collection [ par fiko81 ] Bonjour à tous,Je voulais savoir s'il était possible de  serialiser une classe qui possède une collection ?Exemple :Par exemple : Public MustInherit C Comment surcharger la classe "ListView" pour intégrer un "DataSource" [ par kriesgraf ] Je souhaitais avoir un control ListView avec des grandes icônes qui soit rempli à partir d'une collection d'object "bindable" du genre:Control.DataSou traduction d'un code [ par heilheim ] salut les mec je vient de commencer le codage sur vb.net expresse 2008 enfaite je suis débutant et je voudrais inséré la fonction shared dans mon code ASP + PERVASIVE SQL [ par OSSOUBB ] Bonjour je voudrais afficher des informations sur ma page asp.net, voici mon code mais cela ne marche pas Imports DAL Imports Pervasive.Data.SqlClien Erreur incompréhensible [ par philposer ] Bonjour à tous ou plutôt bonsoir au vu de l'heure, Tout d'abords, j'espère ne pas m'être trompé de catégorie pour mon problème. Lors de la création d problème de transfert de données d'un userform vers une feuille de calcul [ par Otantik972 ] Bonjour, apprenti ingenieur en collectivité territoriale, je débute en VB. j'ai créer un programme de saisie de programmation des routes 2012 en eure


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,870 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales