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 6 et antérieur Discussion :

Problème de gestion d'une collection d'objet


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Problème de gestion d'une collection d'objet
    Bonjours a tous, voici mon problème:
    J'ai une collection:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim TabUtils as Collection
    Dans cette collection je souhaite stocker des objets de type "Personnel" qui provienne d'une classe du même nom.
    Dans la logique de mon programme je doit tout d'abord ressortir par une requête la totalité du personnel et ensuite les stocker dans la collection.
    Jusqu'a la tout va bien ...
    J'ai créer une boucle dans laquelle je recupere les resultat de ma requete champs par champs pour les mettre dans mon objet provisoire.
    Le problème intervient a la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TabUtils.Add UserProv, str2
    A chaque fois que je rajoute un objet dans la collection, les autre qui y sont deja rentré prenne sa valeur
    du type:
    Item1=UserProv
    Item2=UserProv=Item1
    Item3=UserProv=Item1=Item2
    ect...
    Merci par avance pour ce qui voudrons bien me proposer quelques solutions.
    Ps: je suis un débutant VB
    Voici le code "complet":
    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
     
        Private Sub ChargerUtils()
        'Déclaration des variables locales
        Dim UserProv As New Personnel
        Dim i As Variant
        Dim str As Variant
        Dim str2 As Variant
     
        'Instanciation de la connexion et du Recordset
        Set con = New Connection
        Set Rec = New Recordset
     
     
        Set TabUtils = New Collection
     
       'definition du pilote de connexion
        con.Provider = "Microsoft.Jet.Oledb.4.0"
     
        'renseignement de la base à laquelle on va se connecter
        con.ConnectionString = "D:\DataBase.mdb"
     
        'Ouverture de la connexion
        con.Open
     
        i = 1
        'execution de la requete
        Rec.Open "SELECT * FROM Personnel", con '  requete ok capturer error de ref non existante avec resume next
     
        'Remplissage de la collection tant que le Recordset n'est pas au dernier champs
        Do While Rec.EOF = False
        str = "key"
        str2 = str & i
        On Error GoTo erreur
           With UserProv
                .Nom = Rec.Fields("Nom")
                .Prenom = Rec.Fields("Prénom")
                .PASSWORD = Rec.Fields("Password")
                .G1 = Rec.Fields("G1")
                .G2 = Rec.Fields("G2")
                .G3 = Rec.Fields("G3")
                .G4 = Rec.Fields("G4")
                .G5 = Rec.Fields("G5")
                .DROITS = Rec.Fields("Droits")
            End With
     
            'Déplacement du curseur vers le prochain enregistrement
            Rec.MoveNext
     
            'Ajout de l'objet Personnel courant dans la collection
            TabUtils.Add UserProv, str2
            i = i + 1
        Loop
     
        'Fermeture des variables de connexion et Recordset
        Rec.Close
        con.Close
        Exit Sub
    erreur:
            MsgBox Err.Description
    End Sub

  2. #2
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 80
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    Bonjour
    Je n'ai pas vraiment regardé, mais regardes peut-être du coté du curseur de ton recordset (rs.CurseurLocation=adUseClient) et surtout au niveau du vérouillage dans ta connexion (adLockOptimistic) et adOpenDynamic.
    Essaie aussi avant de parcourir ton recordset un rs.movefirst.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Tout d'abord merci a toi de ta reponse mais toute cette partie là marche bien:
    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
     
    Do While Rec.EOF = False
        str = "key"
        str2 = str & i
        On Error GoTo erreur
           With UserProv
                .Nom = Rec.Fields("Nom")
                .Prenom = Rec.Fields("Prénom")
                .PASSWORD = Rec.Fields("Password")
                .G1 = Rec.Fields("G1")
                .G2 = Rec.Fields("G2")
                .G3 = Rec.Fields("G3")
                .G4 = Rec.Fields("G4")
                .G5 = Rec.Fields("G5")
                .DROITS = Rec.Fields("Droits")
            End With
     
            'Déplacement du curseur vers le prochain enregistrement
            Rec.MoveNext
    loop
    Mon objet provisoire que je nomme UserProv a bien toute ces proprietes renseignées.
    Mais c au moment de le mettre dans la collection que le bas blesse...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TabUtils.Add UserProv, str2
    Je vois bien mes 24 objets dans ma collection mais ils ont tous la valeur du dernier que j'ai ajouter.
    As tu une idée d'ou cela pourrais venir?
    Je te pris de croire que tu m'ôterais une sacrée épine du pied!

  4. #4
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 80
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Points : 1 241
    Points
    1 241
    Par défaut
    Bonsoir

    Après ton add, vide ton objet provisoire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TabUtils.Add UserProv, str2
    Set UserProv = Nothing

Discussions similaires

  1. gestion d'une collection d'objets dynamiques
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 24/03/2009, 10h13
  2. Modifier une collection d'objets dans un formulaire
    Par GiveMeAName dans le forum Struts 1
    Réponses: 6
    Dernier message: 30/08/2006, 13h30
  3. Réponses: 6
    Dernier message: 24/03/2006, 09h22
  4. [Struts] <logic:iterate> sur une collection d objets c
    Par trax020 dans le forum Struts 1
    Réponses: 2
    Dernier message: 12/05/2005, 00h11
  5. [VB6] Sauvegarder une collection d'objets
    Par Sayagh dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 19/09/2003, 11h58

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