begin process at 2010 02 09 21:49:35
  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 Que choisir : "Property Get" ou "Function" ? [ par PROGRAMMIX ] Bonjour,Je recommence à programmer en tentant l'utilisation de classes et collection.En tapant mon code à plusieurs jours d'intervalle, je me suis ren Property get let d'un tableau de structure [ par Polack77 ] Bonjour ,    Je suis sure que cette question à déjà été posée mais je n'arrive pas à mettre la main sur le topic correspondant DZL <img src="/imgs2/s probleme end if [ par eastpeople ] Bonjour, j'ai un problème j'arrive pa a fermer une boucle if sur ce code,je ne sais pas ou mettre le end if.Private Sub OK_Click()If choix_act = "" Th Remplir formulaire avec mon programme [ par minifranki ] Bonjour,Le formulaire ne se rempli pas lorsque je test et jobtient un erreur de debug quand il est temps denvoyer mon formulaire. Je ne sais vraiment


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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 : 0,702 sec (3)

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